Aka*_*asu 2 java swing class jframe jbutton
我希望我的按钮能够运行一个全新的类,它将在内部执行不同的操作.我不知道这是否可能因为我在java上真的很糟糕.我的代码目前看起来像这样:
public class MainMenu {
private class GardenActivities {
public GardenActivities() {
JFrame GardenAct = new JFrame();
GardenAct.setSize(400, 400);
GardenAct.setVisible(true);
}
}
public static void main(String[] args) {
JFrame choice = new JFrame();
choice.setSize(700, 500);
choice.setLocationRelativeTo(null);
choice.setTitle("Seeds");
choice.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 1));
JButton Labora = new JButton();
Labora.setText("Laboratory");
Labora.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
GardenActivities();
}
});
JButton Garden = new JButton();
Garden.setText("Garden");
Garden.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
}
});
choice.getContentPane().add(panel);
ButtonGroup group = new ButtonGroup();
group.add(Garden);
group.add(Labora);
panel.add(Garden);
panel.add(Labora);
choice.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
就像我说的那样.我只需要GardenActivities按下Garden按钮就可以运行我的课程.
你的代码没有编译,是吗?当发生这种情况时,您需要在问题中发布编译错误,以便我们可以帮助您解决问题.
您需要在GardenActivities()语句之前添加关键字new.
@Override
public void actionPerformed(ActionEvent ev) {
new GardenActivities(); // here
}
Run Code Online (Sandbox Code Playgroud)
另外,将GardenActivities放在自己的文件中.没有理由把它变成一个私人的内部阶级,并且有很多理由不这样做.
话虽如此,我建议不要让一个JFrame创建并显示另一个JFrame,因为应用程序通常只有一个JFrame.而是考虑使用CardLayout交换JPanel"视图",或者如果必须显示不同的窗口,请考虑将第二个从属窗口显示为模态或非模态对话框.
还有更多未经请求的建议:你的主要方法是做得太多了.静态main方法中的大多数代码都应该进入非静态主gui类,无论是在构造函数中还是在initGui()构造函数调用的方法中.主要方法应该只是创建一个主gui类的实例,让它可见,这就是它.
关于:
我不知道这是否可能因为我在java上真的很糟糕.
继续编写大量代码,大量代码,并继续查看教程和教科书,这将发生变化.