我有5个JButton:b1,b2,b3,b4,b5。 默认情况下,它们的颜色是灰色的。 当我点击任何按钮时,该按钮的背景变成白色。 当我点击另一个按钮时,我希望先前单击的按钮将其背景更改为灰色,并且此新近单击的按钮将其背景更改为白色。这里是我写的代码:设置Jbutton的背景
int liveButton = 0; //holds the value of the button that is last clicked.
//0 indicates no button clicked (in the beginning)
private void ChangeInUsersList(int clickedButton) {
switch(liveButton) {
case 1 : b1.setBackground(Color.GRAY);
break;
case 2 : b2.setBackground(Color.GRAY);
break;
case 3 : b3.setBackground(Color.GRAY);
break;
case 4 : b4.setBackground(Color.GRAY);
break;
case 5 : b5.setBackground(Color.GRAY);
break;
default: System.out.println("No button to change");
}
liveButton = clickedButton;// store the clicked button to change its
//background later
}
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
ChangeInUsersList(1);
b1.setBackground(new java.awt.Color(255,255,255));
}
private void b2ActionPerformed(java.awt.event.ActionEvent evt) {
ChangeInUsersList(2);
b2.setBackground(new java.awt.Color(255,255,255));
}
private void b3ActionPerformed(java.awt.event.ActionEvent evt) {
ChangeInUsersList(3);
b3.setBackground(new java.awt.Color(255,255,255));
}
private void b4ActionPerformed(java.awt.event.ActionEvent evt) {
ChangeInUsersList(4);
b4.setBackground(new java.awt.Color(255,255,255));
}
private void b5ButtonActionPerformed(java.awt.event.ActionEvent evt) {
ChangeInUsersList(5);
b5.setBackground(new java.awt.Color(255,255,255));
}
但是,它没有按预期工作。当我点击一个按钮时,它的背景会变成白色。但是,如果在此之后点击其他按钮,则前一个按钮的背景不会变为灰色。我尝试更换Color.GREY与新java.awt.Color(236,233,216) - rgb为灰色但它仍然无法正常工作。
你想模拟一个ButtonGroup的功能吗?例如只有一个按钮可以选择/切换? btw:用java.awt.Color.white替换new java.awt.Color(255,255,255) – Tedil 2010-04-11 17:41:10
yes!但我并没有意识到ButtonGroup的存在。我认为buttongroup只适用于单选按钮。 – mithun1538 2010-04-12 20:22:24