webentwicklung-frage-antwort-db.com.de

Wie kann ich die Hintergrundfarbe einer Schaltfläche in der Java-GUI einstellen?

Unten ist der Code, der 9 Schaltflächen in Rasterlayout-Form auf einem bestimmten Pannel3 erstellt. Ich möchte, dass der Hintergrund jeder Schaltfläche mit grauem Text darüber schwarz wird. Kann jemand bitte helfen?

 for(int i=1;i<=9;i++)
 {
     p3.add(new JButton(""+i));
 }
15
Salar

Check out JButton Dokumentation. Beachten Sie besonders die von setBackground geerbten setForeground- und JComponent-Methoden.

So etwas wie:

for(int i=1;i<=9;i++)
{
    JButton btn = new JButton(String.valueOf(i));
    btn.setBackground(Color.BLACK);
    btn.setForeground(Color.GRAY);
    p3.add(btn);
}
20

Einfach:

btn.setBackground(Color.red);

So verwenden Sie RGB-Werte:

btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));

11
Ali Mohammadi
for(int i=1;i<=9;i++) {
    p3.add(new JButton(""+i) {{
        // initialize the JButton directly
        setBackground(Color.BLACK);
        setForeground(Color.GRAY);
    }});
}
3
dacwe

Das Ändern der Hintergrundeigenschaft reicht möglicherweise nicht aus, da die Komponente nicht mehr wie eine Schaltfläche aussieht. Möglicherweise müssen Sie die Paint-Methode wie in hier neu implementieren, um ein besseres Ergebnis zu erzielen:

enter image description here

2
luca

Möglicherweise müssen Sie die setOpaque-Methode verwenden, um sicherzustellen, dass die Farben angezeigt werden, indem Sie die Methode true angeben.

2
Tanner

Verwenden Sie die Methode setBackground , um den Hintergrund festzulegen und setForeground , um die Farbe Ihres Textes zu ändern. Beachten Sie jedoch, dass das Einfügen von grauem Text auf einen schwarzen Hintergrund Ihren Text möglicherweise schwer lesbar macht.

1
npinti

Es scheint, dass die setBackground () -Methode auf einigen Plattformen (ich verwende Windows 7) nicht gut funktioniert. Ich fand diese Antwort auf diese Frage hilfreich. Ich habe es jedoch nicht ganz benutzt, um mein Problem zu lösen. Stattdessen entschied ich, dass es viel einfacher und fast ästhetisch wäre, ein Panel neben dem Button zu färben.

0
GregNash