Java 网格布局对齐问题

Java 网格布局对齐问题,java,swing,layout,gridbaglayout,Java,Swing,Layout,Gridbaglayout,一段时间以来我一直在练习GridBagLayout,但当我想要期望的输出时,我仍然感到困惑。我想要这种输出 但我搞砸了创建一个桌子在一边,两个按钮在另一边。桌子挤了 有人能给我这样的代码来对齐组件(按钮和表格)吗。组件的参考是 激活服务器、添加文件和表 提前谢谢 编辑:这是我正在使用的代码(仅用于说明问题的简短代码) } 其输出为: 见鬼,我只想用一个边框布局。如果不需要GridBagLayout,请忘记它。例如 import java.awt.BorderLayout; import jav

一段时间以来我一直在练习GridBagLayout,但当我想要期望的输出时,我仍然感到困惑。我想要这种输出

但我搞砸了创建一个桌子在一边,两个按钮在另一边。桌子挤了

有人能给我这样的代码来对齐组件(按钮和表格)吗。组件的参考是 激活服务器、添加文件和表

提前谢谢

编辑:这是我正在使用的代码(仅用于说明问题的简短代码)

}

其输出为:


见鬼,我只想用一个边框布局。如果不需要GridBagLayout,请忘记它。例如

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

@SuppressWarnings("serial")
public class LayoutFoo extends JPanel {
   private static final int PREF_W = 800;

   public LayoutFoo() {

      JPanel buttonPanel = new  JPanel();
      buttonPanel.add(new JButton("Foo"));
      buttonPanel.add(Box.createHorizontalStrut(10));
      buttonPanel.add(new JButton("Bar"));


      String[] columnNames = {"Mon", "Tues", "Wed"};
      DefaultTableModel model = new DefaultTableModel(columnNames, 25);
      JTable table = new JTable(model);
      JScrollPane scrollPane = new JScrollPane(table);
      scrollPane.getViewport().setPreferredSize(table.getPreferredSize());
      // scrollPane.getViewport().setPreferredSize(table.getPreferredScrollableViewportSize());

      JLabel southLabel = new JLabel("Foobars!");
      southLabel.setForeground(Color.white);
      JPanel southPanel = new JPanel();
      southPanel.setBackground(Color.black);
      southPanel.add(southLabel);

      setLayout(new BorderLayout(5, 5));
      add(buttonPanel, BorderLayout.NORTH);
      add(scrollPane, BorderLayout.CENTER );
      add(southPanel, BorderLayout.SOUTH);
   }

   public Dimension getPreferredSize() {
      Dimension superSize = super.getPreferredSize();
      int width = PREF_W > superSize.width ? PREF_W : superSize.width;
      return new Dimension(width, superSize.height);
   }


   private static void createAndShowGUI() {
      LayoutFoo paintEg = new LayoutFoo();

      JFrame frame = new JFrame("Smart File Transfer");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(paintEg);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGUI();
         }
      });
   }
}

如果你想保持GridBagLayout,我相信你需要这样的东西:

    add(activateServer,new GridBagConstraints(0,0,1,1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));
    add(addFiles,new GridBagConstraints(1,0,1,1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));
    add(table,new GridBagConstraints(0,1,2,1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));
如果您在使用GridBagConstraints的创建者时遇到问题,您应该尝试使用中类似的更简单的方法


有关更多信息,请尝试“有人能给我代码吗”。。。。不。您可以展示您的尝试,我们可以尽全力帮助您。是的,根据@Tdorno的建议,通过您为我们创建和发布您的,我们可以看到您可能会犯哪些错误,从而更好地帮助您。@Tdorno:请检查更新的代码和帮助me@HovercraftFullOfEels:我添加了一个小代码,请检查并帮助
    add(activateServer,new GridBagConstraints(0,0,1,1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));
    add(addFiles,new GridBagConstraints(1,0,1,1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));
    add(table,new GridBagConstraints(0,1,2,1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));