Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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 JTextField未出现在JFrame的顶部_Java - Fatal编程技术网

Java JTextField未出现在JFrame的顶部

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

如何使文本框显示在此JFrame上?在JFrame本身之上构建所有内容也是一种好的实践吗?还是覆盖一个JPanel并在上面构建所有东西更好

提前谢谢

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,那么就非常容易了。我曾经为一个将聊天框添加到不同屏幕的应用程序这样做过,但主要应用程序只是聊天框。