我有一个程序,但我不能将textfield和button组合在同一个框架中,就像在顶部的textfield和下面的button一样
以下是我的源代码:
import java.awt.*;
import javax.swing.*;
public class FirstGui extends JFrame
{
JTextField texts;
JButton button;
public FirstGui()
{
texts = new JTextField(15);
add(texts);
button = new JButton("Ok");
add(button);
}
public static void main(String args [])
{
FirstGui gui = new FirstGui();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(200,125);
gui.setVisible(true);
}
}发布于 2014-02-08 18:58:27
添加像FlowLayout这样的布局
public FirstGui()
{
setLayout(new FlowLayout());
texts = new JTextField(15);
add(texts);
button = new JButton("Ok");
add(button);
}在构造函数的最开始,在其他任何事情之前。
发布于 2014-02-08 19:29:43
JFrame的默认布局为BorderLayout。当您将组件添加到BorderLayout时,如果您没有指定它们的BorderLayout位置,例如BorderLayout.SOUTH,则组件将自动添加到BorderLayout.CENTER。问题是,每个位置只能有一个组件。因此,当您添加texts时,它会被添加到CENTER中。然后,当您添加button时,它会被添加到CENTER中,但texts会被踢出。所以要解决这个问题,你可以这样做
add(texts, BorderLayout.NORTH);
add(button, BorderLayout.CENTER);有关布局管理器的更多信息,请参阅。
更新
import java.awt.*;
import javax.swing.*;
public class FirstGui extends JFrame {
JTextField texts;
JButton button;
public FirstGui() {
texts = new JTextField(15);
add(texts, BorderLayout.CENTER);
button = new JButton("Ok");
add(button, BorderLayout.SOUTH);
}
public static void main(String args[]) {
FirstGui gui = new FirstGui();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.pack();
gui.setVisible(true);
}
}https://stackoverflow.com/questions/21645114
复制相似问题