gpt4 book ai didi

java - 使用 getSource 对未知类型的组件执行操作

转载 作者:行者123 更新时间:2023-11-30 04:08:36 27 4
gpt4 key购买 nike

我想跟踪按特定顺序单击的特定组件。

我正在使用 getSource 和这样的标志:

public void actionPerformed(ActionEvent e) {

JButton q = (JButton)e.getSource();
JRadioButton w = (JRadioButton)e.getSource();

if (q.equals(mybutton)) {
if (flag == false) {
System.out.print("test");
flag = true;
}
}

这对于 JButtons 来说非常有效,问题是也将它用于 JRadioButtons。如果我对它们都使用 getSource,单击一个按钮,将导致强制转换异常错误,因为该按钮无法强制转换为单选按钮。

如何解决这个问题?

最佳答案

您可以使用==来比较引用,因为引用不会改变。

if(e.getSource() == radBtn1){
// do something
}

我过去用过这个,它对我来说就像一个魅力。

对于类转换问题,您需要使用instanceof来检查事件源属于哪个类。如果原因是 JButton 并且您盲目地将其强制转换为 JRadioButton,则会导致异常。你需要这个:

Object source = e.getSource();
if (source instanceof JButton){
JButton btn = (JButton) source;
} else if (source instanceof JRadioButton){
JRadioButton btn = (JRadioButton) source;
}

关于java - 使用 getSource 对未知类型的组件执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177936/

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