JTextField没有出现在JFrame之上

时间:2013-09-13 20:19:55

标签: java

如何在此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);
    }

}

1 个答案:

答案 0 :(得分:1)

您已使用自己的内容窗格替换了默认内容窗格。我猜你的内容窗格不使用布局管理器,因此永远不会显示文本字段。

尝试类似:

//frame.setContentPane(new ImageFrame(myImage));
ImageFrame content = new ImageFrame(myImage));
content.setLayout( new BorderLayout() );
frame.setContentPane(content);

现在,您应将文本字段添加到图像面板的南部。

  

在JFrame本身之上构建所有内容也是一种好习惯吗?或者覆盖JPanel并在其上构建所有内容是否更好?

JFrame的内容窗格是一个JPanel,所以你做什么并不重要,因为你将以任何一种方式使用面板。关键是管理内容窗格的布局管理器。