【问题标题】:Java - Actionlistener: Get components from parentJava - Actionlistener:从父级获取组件
【发布时间】:2014-02-22 22:58:55
【问题描述】:

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

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

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

那么最好的方法是什么?我什至应该使用 actionlistener 开始还是为此目的有更好的类/设计?

【问题讨论】:

    标签: java swing event-handling actionlistener


    【解决方案1】:

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

    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

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

    【讨论】:

    • 其实我已经有了,问题是组件是在父类中创建的。我在任何给定时间将所有组件存储在哈希图中,所以我想我可以在那里访问我需要的元素并将其发送到 actionPerformed 内的构造函数。
    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多