Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GridBagLayout约束不起作用?_Java_Swing_Jpanel_Layout Manager_Gridbaglayout - Fatal编程技术网

Java GridBagLayout约束不起作用?

Java GridBagLayout约束不起作用?,java,swing,jpanel,layout-manager,gridbaglayout,Java,Swing,Jpanel,Layout Manager,Gridbaglayout,这是我使用GridbagLayout public IntroPanel(){ JPanel intro = new JPanel(new GridBagLayout()); JLabel label1 = new JLabel("Test test test"); label1.setFont(new Font("Helvetica", Font.PLAIN, 40)); label1.setHorizontalAlignment(SwingConstants.

这是我使用
GridbagLayout

public IntroPanel(){
    JPanel intro = new JPanel(new GridBagLayout());
    JLabel label1 = new JLabel("Test test test");
    label1.setFont(new Font("Helvetica", Font.PLAIN, 40));
    label1.setHorizontalAlignment(SwingConstants.LEFT);
    JLabel label2 = new JLabel("test2 test2 test2");

    setPreferredSize(new Dimension(640,480));
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 10;
    gbc.gridy = 10;
    gbc.weightx = 0;
    add(label1, gbc);

    gbc.gridx = 20;
    gbc.gridy = 10;
    add(label2, gbc);
}
我更改了所有的
gridx
gridy
gridbagstraints
来对齐它们,但没有任何效果<用于栅格约束的代码>东北也不起作用。有人能帮忙吗?学习如何创建自己的GUI

主要代码在这里

public static void main(String[] args) {
    JFrame frame = new JFrame("Title111111111");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTabbedPane tp = new JTabbedPane();

    tp.addTab("Intro", new IntroPanel());
    tp.addTab("Catalogue", new CataloguePanel());

    JPanel panel = new JPanel();
    panel.setBackground(Color.WHITE);

    frame.add(panel);
    frame.add(tp);
    frame.pack();

    frame.setVisible(true);
}
线路

add(label1, gbc);
正在添加到此(内部面板)

你可能的意思是:

intro.add(label1, gbc);
编辑:

尝试添加
setLayout(新的GridBagLayout())之前添加
s

add(label1, gbc);
正在添加到此
(内部面板

你可能的意思是:

intro.add(label1, gbc);
编辑:


尝试添加
setLayout(新的GridBagLayout())
添加之前
s

这是您的确切代码吗?看起来这不会被编译。是不是
public class IntroPanel
,您的所有代码都在
main
中?或者这是其他的方法?我加了主代码这就是你的代码吗?看起来这不会被编译。是不是
public class IntroPanel
,您的所有代码都在
main
中?或者这是另一种方法?我添加了主代码,它将变成空白,没有任何内容haha@John我认为您可能需要调用
setLayout(new gridbagloayout())
?如果您使用的是GridBagConstraints,则始终需要将要使用它们的组件的布局设置为GridBagLayout。因此答案是corect,您需要调用
setLayout(newgridbaglayout())添加(标签1,gbc)@kuporific我还有一个问题。如果我执行gbc.anchor=GridBagConstraints.NORTHWEST;为什么不放在左上角?@John,因为你没有为gbc分配任何权重。weight(权重)
它将变成空白,没有任何内容haha@John我认为您可能需要调用
setLayout(new gridbagloayout())
?如果您使用的是gridbagconstraint,您始终需要将要在其上使用的组件的布局设置为GridBagLayout。因此答案是corect,您需要调用
setLayout(newgridbaglayout())添加(标签1,gbc)@kuporific我还有一个问题。如果我执行gbc.anchor=GridBagConstraints.NORTHWEST;为什么不放在左上角?@John,因为你没有为gbc分配任何权重。权重