我刚刚开始自学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();
}
});
}
这给了我这个奇迹:
打赌你可以发现我的问题吗?为什么到处都是我的文本框?
如何让它坚持我的“输入单词:”标签?你知道,就在右边吗?
谢谢大家,请,温柔,我只是盯着学习这些东西。
答案 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