我有一個的JFrame其中只包含一個的JList,則的JList都有自己的單元格渲染器,單元渲染器的JTextPane與自定義恢復尺寸。自定義大小會導致此文本窗格的行被包裝。JScrollPane中勾銷我JList中單元格的寬度屬性
textPane.setSize(WIDTH, HEIGHT);
現在我想使此JList滾動的,因此我把它包裝成JScrollPane組件,這然而,勾銷我在單元格渲染器所限定的寬度的限制。在JScrollPane中執行寬度約束的最佳方式是什麼?
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setLayout(new BorderLayout());
DefaultListModel<Status> listModel = new DefaultListModel<Status>();
JList<Status> list = new JList<>(listModel);
list.setLayout(new BorderLayout());
list.setSize(FRAME_WIDTH, FRAME_HEIGHT);
list.setCellRenderer(new MyCellRenderer());
// wrap the list with a JScrollPane
add(new JScrollPane(list), BorderLayout.CENTER);
的setSize沒有任何意義(並且沒有任何效果)施膠和組件的定位是佈局管理的_exclusive_工作。相反,讓你的渲染組件返回一個合理的preferredSize(它決定了列表的pref) – kleopatra 2012-03-30 10:06:15