Java - Action 监听器 : Get components from parent

标签 java swing event-handling actionlistener

到目前为止,我发现在激 Activity 作事件时获取其他组件信息的唯一方法是执行以下操作:

((Swing Component)ActionEvent.getSource()).getParent().getComponent(---).method();

虽然它可以工作,但它并不那么实用或可读,更不用说如果我在父组件中移动组件,很可能会停止正常工作。

那么解决这个问题的最佳方法是什么?我应该一开始就使用 Action 监听器吗?或者是否有更好的类/设计用于此目的?

最佳答案

将监听器设为内部类,直接访问组件:

private JLabel label;
private JButton button;

MyPanel() {
    ...
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            label.setText("button clicked");
        }
    }
}

http://docs.oracle.com/javase/tutorial/uiswing/events/intro.html

内部类的发明主要是出于这个特定的原因。

关于Java - Action 监听器 : Get components from parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961778/

相关文章:

java - 接口(interface)中赋值的语义是什么?

java - xslt 内未封闭的 html 标签

java - 处理文件的小程序在本地工作但在网站上失败

Java JTextArea 未在 GUI 中显示

javascript - 防止事件冒泡(针对 javascript onclick 事件)

java - JOGL 程序无法编译 - 带有类路径的 javac

Java KeyListener 将变量视为静态变量

javascript - 如何在多个预先声明的 jQuery 对象上绑定(bind) jQuery 事件

javascript - 如何使用 JavaScript 列出 DOM 节点的所有已注册事件?

java - 使用最新的 JDK 更新进行开发时使用哪个 JRE