【问题标题】:How to access JFrame's method from JDialog?如何从 JDialog 访问 JFrame 的方法?
【发布时间】:2017-01-03 17:38:41
【问题描述】:

我有我的主 JFrame 和另外一个 JDialog。 如果用户单击按钮,我希望 JDialog 从此 JFrame 调用方法(其中包含此 JFrame 中 ComboBox 的一些操作)。 我怎样才能做到这一点? 我不想使用 MyJFrame form = new MyJFrame();因为它会创建一个我不想做的新 JFrame,所以我想从当前在我的计算机上运行的 JFrame 调用方法。 谢谢。

【问题讨论】:

    标签: java swing jframe jdialog


    【解决方案1】:

    假设JButtonJDialog 上。

    如果两者都在同一个班级,为什么不这样做呢?

    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //I just got clicked
            form.doSomething();
        }
    });
    

    可以简写为

    button.addActionListener(e -> form.doSomething());
    

    如果它们不是,并且您正在扩展 JDialog(我不推荐),只需在其构造函数中传递 JFrame,那么您的对话框将可以访问它。

    如果不查看更多代码,就不可能添加更多内容。

    【讨论】:

    • 其实……他们不是。 “View”包中有JFrame和JDialog,因为程序是基于MVC的。没那么容易……;p
    • @Persantarus 您在第二堂课中扩展JDialog 吗?在其构造函数中传递您的 MyJFrame 并使用它
    • java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new JDialog(form).setVisible(true); } });
    • @Persantarus 如果你已经解决了你的问题,你能接受答案吗?
    • 如前所述。如果它有助于解决问题,请accept the answer
    【解决方案2】:

    也许 JOptionPane.showInputDialog() ,显示一个 JDialog 以获取用户的输入。

    【讨论】:

    • 不幸的是我做不到。我的 JDialog 有一些 ComboBoxes、TextArea 等等……我不可能像你说的那样制作 InputDialog。嗯...也许是可能的,但我会在这个 JOptionPane 的视图上做更多的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多