今天在測試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
沒有留言 :
張貼留言