我认为这是一件简单的事情,但是我在Google中找不到对我有帮助的东西。
我有一个像菜单一样扩展JPanel的类,用户没有单击开始按钮,而是调用了另一个扩展JPanel的类,但是它不起作用。
我在主方法中调用的第一个类是简单的JFrame,代码如下:
JFrame tela = new JFrame("teste");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setSize(800,600);
tela.add(new InitialScreen());
tela.setVisible(true);
在InitialScreen中,我有一个带有以下actionEvent的按钮:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.add(new BackgroundGame());
this.validate();
this.revalidate();
this.setVisible(true);
}
但与此同时我按下按钮,什么也没有发生。
有人能帮我吗?
谢谢。
最佳答案
您将需要在代码中包含以下内容:
JButton button1 = new JButton("Button 1");
InitialScreen panel = new InitialScreen(); // I am assuming this is a JPanel
button1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO add your logic
}
});
panel.add(button);
tela.add(panel);
使用
this
运算符时要小心。如果按照我的示例进行操作,将无法使用this
。您将需要使用ActionEvent
对象来获取源对象,或者需要引用一些全局变量。例如您的情况下的tela
。另外,我认为将
InitialScreen
设为匿名对象也不是一个好主意。您应该像上面一样创建一个显式实例。该按钮应该在面板内部声明,我显示的逻辑应该在
InitialScreen
面板类中。在框架中,您唯一需要做的就是创建InitialScreen
的实例并将其添加到框架中。