JFrame展示了它背后的内容

时间:2015-02-19 23:20:36

标签: java swing jframe jpanel

JFrame Problem Image

    JFrame newLineFrame = new JFrame();
    JPanel newLinePanel = new JPanel();
    newLineFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    newLineFrame.setSize(500, 500);
    newLineFrame.setResizable(false);
    newLineFrame.setVisible(true);
    newLinePanel.setOpaque(true);
    newLinePanel.add(new JLabel("Hello"));
    newLineFrame.add(newLinePanel);
    newLineFrame.repaint();

上面是我的代码的一小部分,用于创建新的JFrame。 JFrame不是显示JLabel,而是显示创建它时背后的内容。

有谁知道这是为什么以及如何解决这个问题? 提前致谢!

1 个答案:

答案 0 :(得分:0)

JFrame显示他的组件内容。您正在向JFrame内部添加一个组件,并将其添加到您contentPane JPanel的{​​{1}}内,之后您将添加另一个组件JPanel {1}}。 我不确定这是否是你问题的原因,但那肯定是错的。相反,这样做:

    JFrame newLineFrame = new JFrame();
    JPanel newLinePanel = new JPanel();
    newLineFrame.setContentPane(newLinePanel);
    newLineFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    newLineFrame.setSize(500, 500);
    newLineFrame.setResizable(false);
    newLineFrame.setVisible(true);
    newLinePanel.setOpaque(true);
    newLinePanel.add(new JLabel("Hello"));        
    newLineFrame.repaint();

尝试一下,让我知道它是否有效:)