0

如何让文本框出现在此 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);
    }

}
4

1 回答 1

1

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

尝试类似:

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

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

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

JFrame 的内容窗格是一个 JPanel,因此无论您做什么都无关紧要,因为无论哪种方式您都将使用面板。关键是管理内容窗格的布局管理器。

于 2013-09-13T20:23:25.033 回答