我希望我的JTable在中心

时间:2016-09-30 09:03:05

标签: java jtable

我希望我的JTable位于我的JFrame的中心,为此我使用了setbounds方法,但它没有做任何事情,我不想使用布局管理器。我只是想知道为什么它什么都没做? 这是我的代码:

   tabel=new JTable(data,columnNames);
   tabel.setLayout(null);
   tabel.setPreferredScrollableViewportSize(new Dimension(500,50));
   tabel.setFillsViewportHeight(true);
   JScrollPane pane=new JScrollPane(tabel);
   pane.setBounds(100,700,200,200);
  add(pane);

3 个答案:

答案 0 :(得分:3)

使用布局管理器会更好但是如果你坚持,你想通过将layout设置为null来在JFrame中移动JTable,那么你应该尝试以下选项: (1)在JFrame中创建一个JPanel并以这种方式将该表添加到JPanel

 JPanel panel=new JPanel();
   panel.setBounds(20,300,700,300);
   add(panel);
   tabel=new JTable(data,columnNames);
   tabel.setBounds(100,20,700,400);
   tabel.setPreferredScrollableViewportSize(new Dimension(500,50));
   tabel.setFillsViewportHeight(true);
   JScrollPane pane=new JScrollPane(tabel);
   panel.add(pane);

答案 1 :(得分:1)

您应该将所有内容添加到JPanel,然后将JPanel的布局设置为边框布局。将表格添加到JPanel,然后将其放在中心。这是最简单的方法。布局可能看起来很复杂且不方便,但是一旦你学会了它们,你很快就会意识到它们设置边界和空布局要容易一百万倍。以下是了解边框布局的链接:https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

答案 2 :(得分:0)

您正在将JTable添加到JFrame(顶级组件)。这可能会让您前进

JPanel tablePanel = new JPanel(new GridBagLayout());
GridBagConstraints layout= new GridBagConstraints();
JTable jtable = new JTable();
jtable.setPreferredScrollableViewportSize(new Dimension(500,50));
jtable.setFillsViewportHeight(true);
layout.fill = GridBagConstraints.BOTH;
layout.weightx = 1;
layout.weighty = 1;
layout.gridx = 0;
layout.insets = new Insets(10,10,10,10);
tablePanel.add(new JScrollPane(jtable), layout)

您可能希望根据您的jtable设置布局尺寸和插图。