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));
}
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);
}
Einfach:
btn.setBackground(Color.red);
So verwenden Sie RGB-Werte:
btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));
for(int i=1;i<=9;i++) {
p3.add(new JButton(""+i) {{
// initialize the JButton directly
setBackground(Color.BLACK);
setForeground(Color.GRAY);
}});
}
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:
Möglicherweise müssen Sie die setOpaque-Methode verwenden, um sicherzustellen, dass die Farben angezeigt werden, indem Sie die Methode true angeben.
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.
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.