Java:从新的 JFrame 获取复选框名称

标签 java swing jframe jcheckbox

我有一个 JCheckBox 定义为:

JCheckBox NewCB = new JCheckbox();
 NewCB.setSelected(false);
 NewCB.setMnemonic(KeyEvent.VK_C);
 NewCB.addItemListener(this);

此复选框正在使用 ItemLisener:

public void itemStateChanged(ItemEvent e) {

    Object source = e.getItemSelectable();
if(source == NewCB) {TEST = "SELECTED"; System.out.println(TEST);}

}

我在程序启动时启动 JFrame。如果我将此复选框添加到框架中,它就可以正常工作。如果我打开第二个 JFrame,并将此复选框添加到第二个框架,则对象源不再起作用。我是否需要进行一些其他定义才能让对象源读取任何打开框架的复选框名称?

最佳答案

首先,你不能将一个组件添加到多个父级;但我不确定这是你的问题。

您所说的复选框“名称”不是复选框的属性,而是指向该复选框的变量的属性。这种差异很重要,因为可能有很多这样的变量。该复选框对指向它的变量一无所知。

既然如此,我们该如何解决这个问题呢?您可以设置复选框的“操作命令”,然后检查:

 NewCB.setActionCommand("Fred");
 // ...
 if ("Fred".equals(((JCheckBox) source).getActionCommand())))
     // ...

关于Java:从新的 JFrame 获取复选框名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302773/

相关文章:

Java - boolean 值未更改的问题

java - JOptionPane.showMessageDialog 查询?

java - 如何针对各种屏幕调整应用程序(JFrame)?

java - 在 IF 语句中比较 JPasswordfield 和 JTextField 继续执行 else 语句

java - 如何在 Jframe 中显示 3d 模型

java - 为什么 JPanel 背景不改变颜色?

Java 父子 JFrame

java - Spring boot Reactive 应用程序启动 tomcat 代替 Netty

java - 在进行 Java 字符串比较时,~ (tilda) 的值是什么?

java - 在 Java 中调用 Oracle 存储过程时遇到问题