如何使JTable适合JFrame的大小?

时间:2015-03-31 16:03:18

标签: java swing jtable jframe layout-manager

我有一个设置为的框架:

setExtendedState(JFrame.MAXIMIZED_BOTH);

现在我有一个Jtable,在日食的设计阶段我完全符合框架:

enter image description here

但是当我运行程序时,我在右侧浪费了太多空间:

enter image description here

如何扩展它以填满右侧的空白区域?

2 个答案:

答案 0 :(得分:3)

要使JTable填充可用空间,请将其放在JPanel内有BorderLayout布局管理器的位置。

JTable table = new JTable();
// Set up table, add data

yourFrame.getContentPane().add( new JScrollPane( table ), BorderLayout.CENTER );

更新:正如camickr

所建议的那样
  

你不需要getContentPane()。从JDK4开始,您只需将组件直接添加到框架中,然后就会自动添加到内容窗格中。

yourFrame.add( new JScrollPane( table ), BorderLayout.CENTER 

答案 1 :(得分:-1)

如果您只有JTable,以下代码应该适合您:

JFrame jframe = new JFrame();
jframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
JTable jtable = new JTable();
jtable.setBackground(Color.yellow);
jframe.getContentPane().add(jtable);
jframe.setVisible(true);

如果您需要向JFrame添加更多组件,我建议您以这种方式使用布局

JFrame jframe = new JFrame();
jframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
GridLayout layout = new GridLayout();  //chose your favorite
JTable jtable = new JTable();
jtable.setBackground(Color.yellow);
Container contentPane = jframe.getContentPane();
contentPane.setLayout(layout);
contentPane.add(jtable);
jframe.setVisible(true);