2009年8月29日 星期六

JList 的 setVisibleRowCount 問題

今天在測試JList的功能時, 發現當content pane 設為null, 自行排版時, JList 的 setVisibleRowCount() 方法就無效, JList 顯示的項目時完全受限於外層控制捲軸的 JScrollPane之大小, 即 setBounds() 之控制. 如果取消自行排版, 改用 Flowlayout 等 manager, 則 setVisibleRowCount 就有效了.

另外, 若 JFrame 原先為自行排版, 途中改為 FlowLayout, 用 f.validate() 重排元件沒問題, 但若又再改回自行排版, 結果 f.validate() 就無效了, why? 很奇怪呵!


   if (e.getSource()==setLayout) {

  if (e.getStateChange()==e.SELECTED) { //取消自行排版以顯示setVisibleRowCount效果

  f.getContentPane().setLayout(new FlowLayout());

  msg.setText("Layout manager:FlowLayout");

}

   if (e.getStateChange()==e.DESELECTED) {

  f.getContentPane().setLayout(null); //無效:無法回復自行排版效果??

  msg.setText("Layout manager:null");

  }  

  f.validate(); //重排元件

  //f.repaint();

  }

看 Kaz 的介紹

>> http://www.wretch.cc/blog/kaz/11363168

沒有留言 :