我有一个带有公共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);