我是GUI的新手,如果错误确实很明显,我们深表歉意。我试图用两个按钮创建一个简单的窗口,但是每次运行代码时,它都会打开四个窗口,而不仅仅是一个窗口。任何帮助,将不胜感激。
public class CISUC extends JFrame implements Serializable {
//interface
JFrame mainFrame;
JPanel mainPanel;
JButton createProject, manageProject,listActive, listUnfinished,listaFinished;
public CISUC(){
//interface
mainFrame = new JFrame();
mainFrame.setResizable(false);
mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(2,3));
createProject= new JButton("Create Project");
mainPanel.add(createProject);
manageProject = new JButton("Manage Project");
mainPanel.add(manageProject);
listActive = new JButton("List Active Projects");
mainPanel.add(listActive);
listUnfinished = new JButton("List Unfinished Projects");
mainPanel.add(listUnfinished);
listFinished = new JButton("Listar Finished");
mainPanel.add(listFinished);
mainFrame.setSize(800, 500);
mainFrame.add(mainPanel);
mainFrame.setVisible(true);
}
public static void main(String[] args) {
CISUC cisuc = new CISUC();
}
}
正如人们已经对您说的那样,打开的帧数没有问题,我只是尝试了代码,它打开了一个JFrame。
我认为您的代码中存在一些错误:您不需要为此扩展JFrame并实现可序列化...这样,由于未使用继承的(未使用的)字段和方法,您使应用程序变得更重家长班。而且(正如其他人已经告诉您的那样),没有与JFrame链接的关闭操作,因此,当您按X按钮时,应用程序将一直运行直到关闭计算机。
为了避免出现这种情况,请添加以下语句:
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
private void addListeners(){...}
这样的单独方法在构造函数代码的末尾调用此函数。我告诉你这是因为,当您在同一位置开始添加所有内容时,使用Swing时很容易出现5000行不可读且无法维护的代码!
祝您申请顺利:)
PS:看一下MigLayout ...我想您会喜欢它的,即使在开始时看起来似乎有点复杂。