我希望我的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);
答案 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设置布局尺寸和插图。