Java JTextField未出现在JFrame的顶部
如何使文本框显示在此JFrame上?在JFrame本身之上构建所有内容也是一种好的实践吗?还是覆盖一个JPanel并在上面构建所有东西更好 提前谢谢Java JTextField未出现在JFrame的顶部,java,Java,如何使文本框显示在此JFrame上?在JFrame本身之上构建所有内容也是一种好的实践吗?还是覆盖一个JPanel并在上面构建所有东西更好 提前谢谢 public class GUI { private static JFrame frame = new JFrame("FrameDemo"); public GUI() { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Buffe
public class GUI {
private static JFrame frame = new JFrame("FrameDemo");
public GUI() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BufferedImage myImage = null;
try {
myImage = ImageIO.read(new File("C:/Users/Desktop/background.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
frame.setContentPane(new ImageFrame(myImage));
JTextField field = new JTextField(10);
frame.add(field, BorderLayout.SOUTH);
Dimension dimension = new Dimension();
dimension.setSize(950, 800);
frame.setSize(dimension);
frame.setVisible(true);
}
}
您已将默认内容窗格替换为自己的内容窗格。我猜您的内容窗格没有使用布局管理器,因此永远不会显示文本字段 尝试以下方法:
//frame.setContentPane(new ImageFrame(myImage));
ImageFrame content = new ImageFrame(myImage));
content.setLayout( new BorderLayout() );
frame.setContentPane(content);
现在,文本字段应该添加到图像面板的南部
在JFrame本身之上构建所有内容也是一种好的实践吗?还是覆盖一个JPanel并在上面构建所有东西更好
JFrame的内容窗格是一个JPanel,因此您所做的并不重要,因为您将以任何方式使用一个面板。关键是管理内容窗格的布局管理器。JFrames有一个底层容器,因此无需添加JPanel。然而,如果您希望您的框架可以轻松地添加到其他地方的容器中,那么如果它已经是一个JPanel,那么就非常容易了。我曾经为一个将聊天框添加到不同屏幕的应用程序这样做过,但主要应用程序只是聊天框。