gpt4 book ai didi

java - 取消选择 JToggleButton 时未调用 ItemStateChanged 事件

转载 作者:行者123 更新时间:2023-11-29 07:14:57 24 4
gpt4 key购买 nike

我在 ButtonGroup 中有几个 JToggleButton,使用 ItemListener 的 itemStateChanged 事件来检测何时选择/取消选择按钮。在我单击按钮本身以选择/取消选择它的情况下,它不起作用。我该如何解决这个问题?如果我使用 ActionListener,当调用 ActionEvent 时,Button 的选择状态 (isSelected()) 始终为真。

ButtonGroup buttonGroup = new ButtonGroup();
for(int i=0;i<toggleButtons.length;i++){
buttonGroup.add(toggleButtons[i]);
}
for(int i=0;i<toggleButtons.length;i++){
final int j=i;
toggleButtons[i].addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
JToggleButton item=(JToggleButton)e.getSource();
if(e.getStateChange()==ItemEvent.SELECTED){
System.err.println(j+" selected!!!! "+item.getText());
} else if(e.getStateChange()==ItemEvent.DESELECTED){
System.err.println(j+" unselected!!!! "+item.getText());
}
}
});
}

最佳答案

You cannot actively deselect a button in a ButtonGroup, you have to select another button, but when a new button is selected, the previous is deselected, and two events are triggered, one for the selected一个用于取消选择的项目。

例如:

public class FrameTest extends JFrame {

public FrameTest init() {
ItemListener listener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
((JToggleButton)e.getSource()).setText("" + e.getStateChange());
}
};
setLayout(new GridLayout(2,1));
ButtonGroup bg = new ButtonGroup();
// button 1
JToggleButton jtb = new JToggleButton("Button");
jtb.addItemListener(listener);
bg.add(jtb);
add(jtb);
// button 2
jtb = new JToggleButton("Button");
jtb.addItemListener(listener);
bg.add(jtb);
add(jtb);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
pack();
return this;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new FrameTest().init();
}
});
}
}

产生:

not selected any yet Selected upper button Selected bottom button

关于java - 取消选择 JToggleButton 时未调用 ItemStateChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com