GridBagLayout和展示位置

时间:2014-02-17 18:04:50

标签: java swing jpanel gridbaglayout

我刚刚开始自学Java的JFrame和JSwing的基础知识。这一切都很有趣和游戏。

我听说如果你想用Java制作GUI,那么GridBagLayout就是要掌握的布局,而且我这样做了,所以我就开始了。

最近,今天,我尝试为自己制作一个GUI,取得了一些好的结果。但是我遇到了一个问题。

我的代码如下:

String inputText;

public welcomeFrame(String title) {
    super(title);

    Container c = getContentPane();
    GridBagConstraints gc = new GridBagConstraints();

    launchGUI.setMyDefaults(this, 800, 300);

    setLayout(new GridBagLayout());

    gc.weighty = 1;

    gc.anchor = GridBagConstraints.NORTH;

    gc.gridx = 0;
    gc.gridy = 0;

    c.add(intro1, gc);

    gc.gridx = 0;
    gc.gridy = 1;

    c.add(intro2, gc);

    gc.gridx = 0;
    gc.gridy = 2;

    c.add(intro3, gc);

    gc.gridx = 0;
    gc.gridy = 3;

    c.add(intro4, gc);

    gc.gridx = 0;
    gc.gridy = 4;       

    c.add(intro5, gc);

    gc.anchor = GridBagConstraints.SOUTH;

    gc.gridx = 0;
    gc.gridy = 5;       

    c.add(tweets, gc);

    gc.gridx = 1;
    gc.gridy = 5;

    c.add(textFrame, gc);

    textFrame.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            inputText = textFrame.getText();
            dispose();

        }
    });

}

这给了我这个奇迹: enter image description here

打赌你可以发现我的问题吗?

为什么到处都是我的文本框?

如何让它坚持我的“输入单词:”标签?你知道,就在右边吗?

谢谢大家,请,温柔,我只是盯着学习这些东西。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,最简单的解决方案是将JLabel和JTextField添加到新的JPanel并将其添加到整体布局。

例如:

gc.gridx = 0;
gc.gridy = 5;

JPanel panel = new JPanel();
panel.add(tweets);
panel.add(textFrame);

c.add(panel, gc);

您还可以尝试调整前几行的网格宽度:

gc.gridwidth = 2;//before adding the intros
...
gc.gridwidth = 1;//right after the last intro