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

时间:2016-05-26 13:05:10

标签: java swing jframe jdialog

我有一个JFrame(名为FTask),带有public void方法。示例代码:

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

然后,我有一个按钮JDialog。我想当我点击按钮时,框架会清除'清除'框架的方法。

我试过了:

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

但它没有用。

3 个答案:

答案 0 :(得分:2)

  

我试过了:

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

但它不起作用。

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

这可以通过多种方式修复,过于宽泛而无法进入,并且是在尝试编写GUI应用程序之前应该掌握的面向对象编程101。 - 这增加了他们自己的并发症。

答案 1 :(得分:1)

您必须使用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();
            }

        }
    });

答案 2 :(得分:0)

正如@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);