选择另一个 Jbutton 时恢复 Jbutton 中的颜色变化
Reverting color change in Jbutton when another Jbutton selected
我的 GUI 有一个来自 db 文件的过滤条目列表。对于每个条目,我都有一个 select Jbutton,它显示每个条目的更多详细信息。
我想要实现的是让 select JButton 在按下时改变颜色,并在 selected 另一个条目的按钮时恢复到原始颜色。
我目前拥有的代码可以很好地更改 selected 颜色按钮,但当另一个条目的详细信息按钮被 selected 时保持相同的颜色:
//within for loop for each object in database
JButton selectedButton = new JButton("Details");
selectButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
entry.vehicleSelected();
if(e.getSource() instanceof JButton )
((JButton)e.getSource()).setBackground(Color.RED);
((JButton)e.getSource()).setOpaque(true);
((JButton)e.getSource()).setContentAreaFilled(false);
}});
如何更改代码才能获得这种效果?
你可以引入一个字段JButton buttonToReset
保存最后按下的按钮并使用它
public void actionPerformed(ActionEvent e) {
entry.vehicleSelected();
if(e.getSource() instanceof JButton )
((JButton)e.getSource()).setBackground(Color.RED);
((JButton)e.getSource()).setOpaque(true);
((JButton)e.getSource()).setContentAreaFilled(false);
if (buttonToReset!=null) {
buttonToReset.setBackground(UIManager.getColor("Button.background"));
}
buttonToReset = ((JButton)e.getSource());
}});
我的 GUI 有一个来自 db 文件的过滤条目列表。对于每个条目,我都有一个 select Jbutton,它显示每个条目的更多详细信息。
我想要实现的是让 select JButton 在按下时改变颜色,并在 selected 另一个条目的按钮时恢复到原始颜色。
我目前拥有的代码可以很好地更改 selected 颜色按钮,但当另一个条目的详细信息按钮被 selected 时保持相同的颜色:
//within for loop for each object in database
JButton selectedButton = new JButton("Details");
selectButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
entry.vehicleSelected();
if(e.getSource() instanceof JButton )
((JButton)e.getSource()).setBackground(Color.RED);
((JButton)e.getSource()).setOpaque(true);
((JButton)e.getSource()).setContentAreaFilled(false);
}});
如何更改代码才能获得这种效果?
你可以引入一个字段JButton buttonToReset
保存最后按下的按钮并使用它
public void actionPerformed(ActionEvent e) {
entry.vehicleSelected();
if(e.getSource() instanceof JButton )
((JButton)e.getSource()).setBackground(Color.RED);
((JButton)e.getSource()).setOpaque(true);
((JButton)e.getSource()).setContentAreaFilled(false);
if (buttonToReset!=null) {
buttonToReset.setBackground(UIManager.getColor("Button.background"));
}
buttonToReset = ((JButton)e.getSource());
}});