Post by a***@gmail.comPost by bamb00cha2006Post by a***@gmail.comsalve a tutti, sto cercando dicolorareunJButton. So che ci sono i
metodi setForeGround() e setBackGround() percolorareil testo
contenuto all'interno e lo spazio che occupa il bottone sul
contenitore; a me servirebbe dicolorarela parte interna, quella tra
i bordi ovali delJButton.
Potrei inserire una icona che su cui sia disegnato il testo
dell'etichetta del bottone ma il bottone potrebbe essere
ridimansionato dall'utente e quindi avrei un risultato poco
soddisfacente.
Sono arrivato alla conclusione che sia necessario aggiungere al
bottone un JPanel, e su quello inserire la JLabel contenente
l'etichetta del bottone. A questo punto bastacolorareil JPanel ed
ottengo parzialmente il risultato voluto.
Parzialmente perchè lo spazio vicino al bordo ovale non viene colorato
ma rimane del colore iniziale, proprio del bottone.
Avete qualche proposta??
Si, una proposta, niente icone e niente jpanel: prova a utilizzare la
public statico vois main(String[] args){
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Button.background", new Color(55,55,66));
...
}
dovrebbe cambiarti le impostazioni grafiche per tutta la tua
applicazione.
Se ne vuoi cambiare altre vai qui che sono elencate tutte le
possibilità
http://home.tiscali.nl/~bmc88/java/sbook/061.html
Se non funzionasse ti mando un esempio che funziona di sicuro (pero'
lunedì perchè ce l'ho in ufficio)
Ciao
ciao e grazie per la risposta.
ho provato defaults.put("Button.background", Color.orange); ma il
risultato è identico al setBackGround ossia si colora di arancione la
parte esterna all'ovale del bottone che si trova sul JPanel
ottenuto
|---------------------------------------------|
|######################|
|###( JButton ) ### |
|######################|
|---------------------------------------------|
le # sono arancioni, l'ovale delJButtonè grigio tradizionale
effetto del comandoJButton.setBackGround(Color.orange)
equivalente al defaults.put("Button.background", Color.orange);
desiderato
|---------------------------------------------|
| |
| (#######JButton######) |
| |
|---------------------------------------------|
adesso l'ovale delJButtonè arancione
non so se sono riuscito a farmi capire.
Altre idee???
Non ho capito, ho provato ma mi sembra che colori bene...
Allego l'esempio.
Colora tutto il bottone, se non vuoi il bordo basta commentare la riga
relativa
Ciao
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
___________________________________________________________________________
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.border.Border;
public class ProveSwing {
public ProveSwing() {
JFrame frame = new JFrame("Bottoni colorati");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(new JLabel("Bottoni"));
frame.getContentPane().add(newJButton("Primo"));
frame.getContentPane().add(newJButton("Secondo"));
frame.setSize(new Dimension(300,300));
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put("Button.background", Color.orange);
Border b = BorderFactory.createRaisedBevelBorder();
uiDefaults.put("Button.border", b);
new ProveSwing();
}}
____________________________________________________________
aqua e che quindi non possono sviluppare un metodo efficiente percolorareil backgruond del bottone.
su OSX perchè ho provato...
ora credo che non mi rimanga altro da fare che cambiare UIManager..