2016-09-20 52 views
0

我正在用java創建類似於Quizlet的程序。將佈局從null更改爲BoxLayou後,Jpanel消失

我爲佈局設置爲null的每個Jpanel創建了一個類。唯一沒有空佈局的類是管理幷包含所有具有CardLayout的JPanel的類。

反正,一切工作正常,問題發生在我的一個類中,其中包含加載每個測驗的Jpanel。我稱之爲LoadMenu。

圖形用戶界面工作得很好,我只是想看看盒子佈局,所以我把它從零布局切換到盒子。然後我意識到,除了一個之外,我的所有組件都在該佈局上消失。現在,當我將佈局更改爲空時,所有內容都消失了,並且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

但是,如果你的面板是在一個jframe中,嘗試調整你的jpanel的大小或調整你的jpanel的大小 – Thecarisma

回答

0

嘗試添加面板到一個JFrame,它可能會幫助

JFrame frame = new JFrame(); 
frame.add(loadmenu); 

在主函數或構造函數 - 適合你自己

setVisible(true); 

希望它的作品!