2011-10-12 103 views
2

这是下面的代码,问题在于JScrollPane保持其首选大小并且不会调整BorderLayout.CENTER区域的大小。当然,我希望它填充该区域,然后使用它滚动表格中的内容。BorderLayout.CENTER中的JScrollPane没有调整大小

frame = new JFrame(); 
frame.setBounds(100, 100, 500, 400); 
JPanel panelCenter = new JPanel(); 
FlowLayout flowLayout = (FlowLayout) panelCenter.getLayout(); 
flowLayout.setAlignment(FlowLayout.LEFT); 
panelCenter.setPreferredSize(new Dimension(300, 400)); 

panelRight = new ActorDrawer(); 
frame.getContentPane().add(panelRight, BorderLayout.EAST); 
panelRight.setLayout(null); 
panelRight.setPreferredSize(new Dimension(200, 400)); 
frame.getContentPane().add(panelCenter, BorderLayout.CENTER); 

table = new JTable(new MyTableModel()); 
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
JScrollPane scrollPane = new JScrollPane(table); 
table.setFillsViewportHeight(true); 
panelCenter.add(scrollPane); 
+0

基本上,你必须学习LayoutManagers的确切行为。然后_always_使用LayoutManager(您的右侧面板没有)。 _千万-ever_使用任何setXXSize方法(原因见http://stackoverflow.com/questions/7229226/avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swing) – kleopatra

回答

7

您不要在JScrollPane添加到使用BorderLayout面板的中心:你把它添加到另一个面板,具有FlowLayout,这个面板添加到中央。删除panelCenter