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?
button.setBackground(Color.RED);
...così non ti va bene?...
...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
...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.
...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?
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...
...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
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
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...
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"???
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)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.