如何通过单击JDialog中的按钮在JFrame中运行方法



我有一个带有公共void方法的JFrame(称为FTask)。示例代码:

public void clear() {
    jTable1.clearSelection();
    jButton1.setEnabled(false);
    jButton3.setEnabled(false);
    jButton2.setEnabled(false);
    jTextArea1.setText(null);
}

然后,我有一个按钮JDialog。我希望当我单击按钮时,框架对框架执行"清除"方法。

我试过:

FTask ft = new FTask();
ft.clear();

但它没有用。

我试过:

    FTask ft = new FTask();
    ft.clear();

但它没有用。

不,不会。此代码正在创建未设置为可见的新帧(第二个实例)。您需要的是对原始框架的引用。

这可以通过多种方式解决,太宽泛而无法在这里讨论,并且是面向对象编程 101,在尝试编写 GUI'd 应用程序之前应该掌握。 - 这增加了自己的复杂性。

您必须使用 actionlistener 才能在单击按钮时运行代码。

 JButton button = new JButton("Click me");
    //Add action listener to button
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            //Execute when button is pressed
            if(e.getSource() == button){
                System.out.println("You clicked the button");
                //In your case:
                ft.clear();
            }
        }
    });

正如@Menno所说,您必须使用ActionListener才能检测按钮点击

以下是Java 8风格:

    JButton button = new JButton("Click me");
    //Add action listener to button
    button.addActionListener(
        ae -> ft.clear();
    );
    // Add button to frame
    add(button);

最新更新