2014-04-01 16 views
0

我想在java中編寫一個表單,但在將JLabels動態插入到當前的JDialog並執行pack()之後,窗口被調整爲最小。顯示JLabels,但我必須手動調整窗口大小。 這裏是將Jlabel插入部分:JDialog.pack()隱藏JLabel

public void displayQuizz(Test quiz){ 
     int xLable = 44; 
     int yLable = 41; 
     int widthLable = 403; 
     int heightLable = 70; 
     int noOfQuestion = 1; 
     for(Question question : quiz.getQuestions()){ 
      JLabel lblNewLabel = new JLabel(Integer.toString(noOfQuestion) + ". " + question.getStatement()); 
      lblNewLabel.setBounds(xLable, yLable, widthLable, heightLable); 
      contentPanel.add(lblNewLabel); 
      contentPanel.revalidate(); 
      contentPanel.repaint(); 
      this.pack(); 

      noOfQuestion++; 
      yLable += heightLable; 
     } 



    } 
+0

不要使用'setBounds()'。 – trashgod

回答

2

pack()方法設置的大小的Window(其中JFrameJDialog從子類)到優選尺寸

優選尺寸是由

  • LayoutManager,這需要的部件的佈置和 其優選尺寸考慮
  • 組件本身決定的,如果它不具有佈局管理器

由於您在示例中沒有使用佈局管理器(並且手動設置了標籤的邊界),因此您還必須自己指定首選大小(請參閱getPreferredSize(),默認值爲0x0,這是您遇到的問題)。

我鼓勵你習慣總是使用佈局管理器(其中有相當多的佈局管理器,如果沒有滿足您的需求,您可以輕鬆編寫自己的佈局管理器策略)。

+0

謝謝。我正在使用絕對佈局 – user2140184