私は5つのJButtonを持っています:b1、b2、b3、b4、b5。デフォルトでは、それらの色は灰色です。いずれかのボタンをクリックすると、そのボタンの背景が白に変わります。別のボタンをクリックすると、前にクリックしたボタンで背景を灰色に変更し、この新しくクリックしたボタンで背景を白に変更します。これが私が書いたコードです:
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ですが、それでも機能しません。