我在java中创建一个程序,类似于Quizlet。
我为每个Jpanel创建了一个类,其布局设置为null。唯一没有空布局的类是管理和包含所有具有CardLayout的JPanel的类。
无论如何,一切都运行正常,问题发生在我的一个类中,其中包含一个加载每个测验的Jpanel。我叫它LoadMenu。
GUI工作得很好,我只想检查一下盒子布局,所以我把它从空布局切换到了盒子。然后我意识到我的所有组件,除了一个,都消失在该布局上。现在,当我将布局更改回null时,一切都仍然消失,并且JPanel一起完全消失了。我点击了Control-Z
并撤消了所有更改,但它仍然没有了。
无论如何我可以将它恢复到以前的状态吗?
谢谢
不确定这是否有帮助,但这是loadMenu类
public class LoadMenu extends JPanel implements ActionListener {
private QuizManager manager;
private FileManager file = new FileManager();
private JComboBox comboBox;
private JButton nextButton;
private JButton refreshButton;
private JButton backButton;
private ProblemSet problemSetList;
LoadMenu(ProblemSet newProblemSetList, QuizManager newManager){
manager = newManager;
problemSetList = newProblemSetList;
JPanel loadMenu = new JPanel();
loadMenu.setLayout(null);
loadMenu.setBounds(1, 0, 681, 426);
add(loadMenu);
loadMenu.setLayout(null);
loadMenu.setBounds(1, 0, 681, 426);
JLabel selectQuizLabel = new JLabel("Select Quiz");
selectQuizLabel.setFont(new Font("Times New Roman", Font.BOLD, 20));
selectQuizLabel.setBounds(261, 104, 110, 31);
loadMenu.add(selectQuizLabel);
comboBox = new JComboBox();
comboBox.setBounds(274, 194, 153, 22);
loadMenu.add(comboBox);
nextButton = new JButton("Next");
nextButton.setBounds(530, 370, 139, 43);import junit.framework.TestCase;
import junit.framework.TestCase;
loadMenu.add(nextButton);
nextButton.addActionListener(this);
listQuizNames();
refreshButton = new JButton("Refresh");
refreshButton.addActionListener(this);
refreshButton.setBounds(241, 229, 139, 31);
loadMenu.add(refreshButton);
backButton = new JButton("Back");
backButton.addActionListener(this);
backButton.setBounds(12, 370, 139, 43);
loadMenu.add(backButton);
}
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src == nextButton){
manager.startQuiz((String)comboBox.getSelectedItem());
}
else if(src == refreshButton){
listQuizNames();
}
else{
manager.showNextCard("startMenu");
}
}
public void listQuizNames(){
ArrayList<String> quizList = new ArrayList<String>();
file.readQuizNames(quizList);
comboBox.setModel(new DefaultComboBoxModel(quizList.toArray()));
}
}
答案 0 :(得分:0)
尝试将面板添加到JFrame,这可能会有所帮助
JFrame frame = new JFrame();
frame.add(loadmenu);
在main函数或构造函数中 - 适合自己
setVisible(true);
希望它有效!!