Java 用网格布局整齐地显示

Java 用网格布局整齐地显示,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我在这个程序中有三个选项卡,在第三个选项卡上有一个JTalbe和JButton。我使用GridBagLayout作为布局管理器,但设置我想要的位置是相当棘手的。(但我认为它确实比其他裁员经理更强大。)不管怎样,正如你看到的下图。左边是我做过的,右边是我想设置的。你们能给我一个提示吗 这是我左边窗口的代码 private static void thirdTab(JPanel panel) { panel.setLayout(new GridBagLayout()); GridB

我在这个程序中有三个选项卡,在第三个选项卡上有一个JTalbe和JButton。我使用GridBagLayout作为布局管理器,但设置我想要的位置是相当棘手的。(但我认为它确实比其他裁员经理更强大。)不管怎样,正如你看到的下图。左边是我做过的,右边是我想设置的。你们能给我一个提示吗

这是我左边窗口的代码

private static void thirdTab(JPanel panel) {
    panel.setLayout(new GridBagLayout());
    GridBagConstraints gbc=new GridBagConstraints();

    String[] columnNames={"name","number","Contents"};
    Object [][]data={
            {"ken","11","haha"},
            {"ben","22","hehe"},
    };

    DefaultTableModel defTableModel=new DefaultTableModel(data,columnNames){
        public boolean isCellEditable(int rowIndex, int mColIndex){
            return false;
        }
    };
    JTable table=new JTable(defTableModel);
    table.getTableHeader().setReorderingAllowed(false) ;

    JScrollPane sroll=new JScrollPane(table);

    //First Column
    gbc.anchor=GridBagConstraints.LAST_LINE_START;
    gbc.weightx=0.1;
    gbc.weighty=0.1;

    gbc.gridx=0;
    gbc.gridy=1;

    JButton button=new JButton("View/Edit");
    panel.add(button,gbc);

    gbc.gridx=0;
    gbc.gridy=0;

    gbc.fill=GridBagConstraints.BOTH;

    panel.add(sroll,gbc);


    panel.setVisible(true);

}

嗯,我不太使用GridBagLayout,但我认为您需要使用带有值“CENTER”的“anchor”约束。请阅读上Swing教程的部分,以更好地描述这些约束


或者,另一个选项是将包含表格的滚动窗格添加到BorderLayout的中心。然后创建一个JPanelm,默认情况下使用FlowLayout。将按钮添加到此面板,然后将面板添加到BorderLayout.SOUTH。

如camickr建议的,替换行
gbc.anchor=GridBagConstraints.LAST_line_START;
gbc.anchor=GridBagConstraints.CENTER;