gpt4 book ai didi

java - 如何启用禁用的 JRadioButton

转载 作者:行者123 更新时间:2023-12-04 03:02:05 26 4
gpt4 key购买 nike

我有两个 JRadioButton,每个都有 ImageIcon。由于我使用的 ImageIcons,我需要给出一个按钮被选中而另一个按钮未被选中的外观。为此,我试图禁用另一个按钮,它会自动将 ImageIcon 更改为禁用外观。

问题是当我点击禁用的 JRadioButton 时,没有任何反应,甚至 JRadioButton 上的 ActionListener 都没有被调用。

有没有一种方法可以通过直接单击来启用已禁用的 JRadioButton?一旦它被禁用,它的 ActionListener 就不再被调用,所以我不能通过点击它来启用它。

基本上,我试图使用 ImageIcons 来呈现当一个被选中时另一个未被选中的效果。

//Below part of my code how I initialize the buttons
ButtonGroup codeSearchGroup = new ButtonGroup();

searchAllDocs = new JRadioButton(new ImageIcon(img1));
searchCurrDoc = new JRadioButton(new ImageIcon(img2));

RadioListener myListener = new RadioListener();
searchAllDocs.addActionListener(myListener);
searchCurrDoc.addActionListener(myListener);

codeSearchGroup.add(searchAllDocs);
codeSearchGroup.add(searchCurrDoc);


//Below listener class for buttons
class RadioListener implements ActionListener {
public void actionPerformed(ActionEvent e) {

if(e.getSource() == searchAllDocs){
searchAllDocs.setEnabled(true);
System.out.println("Search All documents pressed. Disabling current button...");
searchCurrDoc.setEnabled(false);

}
else{
searchCurrDoc.setEnabled(true);
System.out.println("Search Current document pressed. Disabling all button...");
searchAllDocs.setEnabled(false);
}
}


}

提前致谢。

最佳答案

ActionListener 不会在禁用模式下触发,但鼠标事件会触发。

因此只需将 MouseAdapter 添加到 JRadioButton 并覆盖 mouseClicked(..) 并调用 setEnable(true) 在重写的方法中,像这样:

    JRadioButton jrb = new JRadioButton("hello");
jrb.setEnabled(false);

jrb.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me) {
super.mouseClicked(me);
JRadioButton jrb = (JRadioButton) me.getSource();
if (!jrb.isEnabled()) {//the JRadioButton is disabled so we should enable it
//System.out.println("here");
jrb.setEnabled(true);
}
}
});

虽然我必须说这其中有一点歪曲的逻辑在起作用。如果某些东西被禁用是出于某种原因,因此我们不应该允许用户启用。如果我们这样做,应该有一个控制系统,我们可以在其中选择启用/禁用按钮,它不会成为控制系统本身。

关于java - 如何启用禁用的 JRadioButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145648/

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