2015-03-13 62 views
0

我正在使用填充動態生成按鈕的項目使用JPanel,讀取從DB填充的列表。
我有一個下一個和上一個按鈕來翻動頁面。 一切工作正常的前兩頁,但第三,當列表的剩餘大小小於32(最大的按鈕,以適應完美的頁面),只有5個按鈕仍然是「生成」,舊的即使我打電話給jPanel.removeAll(),我也嘗試添加jPanel.revalidate()JPanel在removeall後仍然有按鈕()

請注意,列表內容不會更改。

下面是代碼:

private void loadCat(int catnr) { //loads second,third,etc. category page 
    jMainPanel.removeAll(); 
    jMainPanel.revalidate(); 

    for (int i = catnr; i < engine.LoadItems.catlist.size(); i++) { 
     if (i == catnr + 32) // more than 32 buttons do not fit per page 
      break; 
     final JButton btn = new JButton(); 
     btn.setPreferredSize(new Dimension(100, 50)); 
     btn.setText(engine.LoadItems.catlist.get(i)); 
     btn.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent ae) { 
       //some code here (...) 
      } 
     }); 
     jMainPanel.add(btn); 
     jMainPanel.setPreferredSize(new Dimension(436, 480)); 
     jMainPanel.revalidate(); 
    } 
} 

問:我如何獲得的面板顯示只有3頁的其餘項目(或將來的任何網頁上)?我究竟做錯了什麼?

截圖:

http://oi59.tinypic.com/2dqisug.jpg

http://oi60.tinypic.com/ifoqiu.jpg

回答

3

只需添加後/刪除組件調用

revalidate(); 
repaint(); 

重新驗證調用佈局管理器重新計算所有組件的尺寸和重繪重繪新的大小組件。

+0

重繪後問題明確 – Akos 2015-03-13 08:52:15

+0

謝謝@StanislavL – Akos 2015-03-13 09:00:27

相關問題