java - 我无法将字符串从 ActionListener 获取到 Java 中的不同类

标签 java swing awt actionlistener jcombobox

我创建了一个 JComboBox 和 JButton 来提交信息。我需要将信息发送到不同的类,以使用 switch 方法对其进行排序。但看起来 ActionListener 内创建的字符串不能被其他类识别。

public Main() {
    final JComboBox comboB = new JComboBox(b);          //add int b in here for array
    comboB.setBounds(50, 30, 123, 20);
    contentPane.add(comboB);

    JButton btnTest = new JButton("Test");
    btnTest.setBounds(300, 350, 89, 23);
    contentPane.add(btnTest);

    btnTest.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            String s = (String)comboB.getSelectedItem();
        }
    });
 }

如何使 String 能够被其他类识别?我有一个单独的类,它将根据从 ComboBox 中选择的内容来更改操作,但我似乎无法获取此信息。谢谢。

最佳答案

首先,其他对象需要某种方式将 ActionListener 注册到组合框。我建议为您的类提供一个 addActionListener 方法,这将充当代理方法并简单地将调用传递到 comboB

其次,这意味着 comboB 将需要是一个类实例变量

第三,例如,​​其他类需要确定该操作是否源自组合框。

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() instanceof JComboBox) {
        JComboBox cb = (JComboBox)e.getSource();
        String s = (String)cb.getSelectedItem();
    }
}

现在,这个问题没有太多可用的上下文,但是,就个人而言,我通常会使用您的 UI 类将更新的某种模型和/或其他的 PropertyChangeListener类可以注册并监视主类“属性”的更改。

关于java - 我无法将字符串从 ActionListener 获取到 Java 中的不同类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17519833/

相关文章:

java - 使用 Java Applet 用箭头键移动球

java - 服务器返回 HTTP 响应代码 : 403 for URL: Iam displaying webpage on JEditorPane

java - 两个 Controller 在 Spring Boot 中具有不同的最大文件大小

java - 无法实现显式等待

java - 如何根据JFrame大小设置JScrollPane的大小?

java - JLabel 不改变 MouseEvent 的颜色? java

java - 任何将 javadoc 嵌入 jar 的方法

java - 如何为 ButtonGroup setSelected(其中所有 JRadioButton 都是在循环中创建的)?

java - 从 Object[][] 转换为 ImageIcon

java - 在我的程序中为我的非图形相关类使用 swing 和 awt 类是不好的做法吗?