PDA

View Full Version : [JAVA] Colorare JButton


franksisca
10-04-2012, 17:16
potrà sembrare strano, ma non mi funziona.


UIDefaults defaults = UIManager.getDefaults();
defaults.put("Button.background", new Color(0, 0, 131));
defaults.put("Button.font", new Font("Calibri", Font.PLAIN, 12));


ho usato questi comandi, e mi colora la parte "esterna" del pulsante, io invece vorrei che mi colorasse uniformemente tutto il jbutton.

cosa devo fare??? non ditemi che devo "ricrearmelo"...oppure devo mette una immagine con sopra il testo?

ally
11-04-2012, 10:52
button.setBackground(Color.RED);

...così non ti va bene?...

ally
11-04-2012, 10:54
...e attento ad una miriade di parametri se vuoi che mantenga un layout sempre uguale :



setFocusPainted(false);
setRolloverEnabled(true);
setBorderPainted(false);
setContentAreaFilled(true);
setFocusPainted(false);

franksisca
11-04-2012, 11:01
ho il risultato in immagine, io invece vorrei che tutto il pulsante avesse uno sfondo univoco, un pò come succede quando gli tolgo i bordi ed uso una icona che diventalei stesso il pulsante.

spero di aver reso l'idea

ally
11-04-2012, 11:05
...hai provato ad usare le impostazioni del secondo post?...

franksisca
11-04-2012, 11:31
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Button.background", new Color(0, 0, 131));
defaults.put("Button.font", new Font("Calibri", Font.PLAIN, 12));
defaults.put("Button.FocusPainted",false);
defaults.put("Button.RolloverEnable",true);
defaults.put("Button.BorderPainted",false);
defaults.put("Button.ContentAreaFilled",true);



ho provato anche modificandoli da netbeans e dal suo editor, ma ho sempre lo stesso risultato.

ally
11-04-2012, 11:39
...come mai usi la configurazione globale?...

franksisca
11-04-2012, 11:57
...come mai usi la configurazione globale?...

perchè mi servono le stesse impostazioni su tutti i pulsanti...dici che per "testare" tolgo quella configurazione globale e lavoro sul singolo pulsante?

ally
11-04-2012, 14:37
perchè mi servono le stesse impostazioni su tutti i pulsanti...dici che per "testare" tolgo quella configurazione globale e lavoro sul singolo pulsante?

...puoi anche creare un bottone specifico :

public class BaseButton extends JButton{

public BaseButton(){

setBackground(Color.white);
setFocusPainted(false);
setRolloverEnabled(true);
setBorderPainted(false);
setContentAreaFilled(true);

}

}

franksisca
11-04-2012, 14:45
edit

franksisca
11-04-2012, 14:50
...puoi anche creare un bottone specifico :

public class BaseButton extends JButton{

public BaseButton(){

setBackground(Color.white);
setFocusPainted(false);
setRolloverEnabled(true);
setBorderPainted(false);
setContentAreaFilled(true);

}

}
il "problema" è che avendo usato netbeans e il suo edito grafico per le interfaccie, andando a modificare un componente fondamentale come quello dovrei riscrivere tutto...

ally
11-04-2012, 14:55
...si ma ora funge?...purtroppo ho docuto abbandonare matisse e soci proprio per questo...ora le cose sono piu' difficili ma la libertà di intervento sul codice compensa...

franksisca
11-04-2012, 15:04
...si ma ora funge?...purtroppo ho docuto abbandonare matisse e soci proprio per questo...ora le cose sono piu' difficili ma la libertà di intervento sul codice compensa...

non funziona...credo che alla fine non farò questa modifica, al massimo cambio il lookandfeel...sinceramente io non adoro gli editor, ma quando serve una applicazione veloce sono "costretto" ad usarla

ally
11-04-2012, 15:14
non funziona...credo che alla fine non farò questa modifica, al massimo cambio il lookandfeel...sinceramente io non adoro gli editor, ma quando serve una applicazione veloce sono "costretto" ad usarla

...come preferisci...

franksisca
11-04-2012, 16:23
...come preferisci...

e c'hai ragione

franksisca
11-04-2012, 17:14
e c'hai ragione

giusto per evitare fraintendimenti...il mio "e c'hai ragione" è stato detto come "sconsolato", in quanto per questioni lavorative sono costretto ad utilizzare questi mezzi che semplificano molto la vita ma ovviamente hanno delle limitazioni, quando anche a me piace, invece, scrivere tutto in modo ordinato e poi magari con un semplice refactoring modificare anche 50-60 classi.

quando posso scrivo tutto a mano, e lo continuo a consigliare come prima scelta se uno può scegliere

ally
12-04-2012, 08:07
giusto per evitare fraintendimenti...il mio "e c'hai ragione" è stato detto come "sconsolato", in quanto per questioni lavorative sono costretto ad utilizzare questi mezzi che semplificano molto la vita ma ovviamente hanno delle limitazioni, quando anche a me piace, invece, scrivere tutto in modo ordinato e poi magari con un semplice refactoring modificare anche 50-60 classi.

quando posso scrivo tutto a mano, e lo continuo a consigliare come prima scelta se uno può scegliere

...certo certo...e non è nemmeno possibile passare da un approccio ad un altro in poche ore...sopratutto quando il progetto ha scadenze ben chiare...

PGI-Bis
12-04-2012, 08:47
Il problema è che il lookandfeel che usi (a naso quello di windows) disegna sopra allo sfondo qualcos'altro e non sembra che il qualcos'altro sia controllabile - se è quello nativo la cosa ha una sua ragion d'essere: l'aspetto generale deve dipendere dalle impostazioni del gestore delle finestre di sistema.

Devi scavalcarlo se vuoi personalizzare tutti i JButton. Significa cambiare il valore di ButtonUI e metterci qualcos'altro. Ad esempio scrivendo:

UIDefaults def = UIManager.getDefaults();
def.put("ButtonUI", BasicButtonUI.class.getName());
def.put("Button.background", Color.RED);

saltano fuori dei JButton rossi. Piatti, tristi muffi stantii ma rossi.

franksisca
12-04-2012, 11:15
Il problema è che il lookandfeel che usi (a naso quello di windows) disegna sopra allo sfondo qualcos'altro e non sembra che il qualcos'altro sia controllabile - se è quello nativo la cosa ha una sua ragion d'essere: l'aspetto generale deve dipendere dalle impostazioni del gestore delle finestre di sistema.

Devi scavalcarlo se vuoi personalizzare tutti i JButton. Significa cambiare il valore di ButtonUI e metterci qualcos'altro. Ad esempio scrivendo:

UIDefaults def = UIManager.getDefaults();
def.put("ButtonUI", BasicButtonUI.class.getName());
def.put("Button.background", Color.RED);

mi ero scordato che il default window manager potesse creare problemi...risolto

saltano fuori dei JButton rossi. Piatti, tristi muffi stantii ma rossi.

effettivamente sono tristi...consigli qualcosa per "ravvivarli"???

PGI-Bis
12-04-2012, 12:38
In linea generale dovresti creare un tuo ButtonUI e con quello ai pulsanti dai le forme e i colori che preferisci.

Non è neanche complicato, prendi BasicButtonUI per le funzioni di base e nella tua sottoclasse disegni l'aspetto che più ti piace (ridefinendo il metodopaint(Graphics,JComponent)). Poi usi il nome della tua classe come valore della proprietà ButtonUI.

Il vero problema è l'omogeneità rispetto agli altri componenti, il look è una questione complessiva, se cambi solo un componente è difficile evitare l'effetto "pugno nell'occhio".

franksisca
12-04-2012, 14:06
In linea generale dovresti creare un tuo ButtonUI e con quello ai pulsanti dai le forme e i colori che preferisci.

Non è neanche complicato, prendi BasicButtonUI per le funzioni di base e nella tua sottoclasse disegni l'aspetto che più ti piace (ridefinendo il metodopaint(Graphics,JComponent)). Poi usi il nome della tua classe come valore della proprietà ButtonUI.

Il vero problema è l'omogeneità rispetto agli altri componenti, il look è una questione complessiva, se cambi solo un componente è difficile evitare l'effetto "pugno nell'occhio".

però se lo disegno "in linea di massima" come quello generale, evito il pugno nell'occhio e faccio qualcosa di "mio"...suppongo che sia lunghetta la cosa, ma quasi quasi mezza giornata la "perdo"

franksisca
12-04-2012, 15:03
continuiamo qui please (http://www.hwupgrade.it/forum/showthread.php?p=37266122#post37266122)