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