如何在运行时添加和显示JLabel?

时间:2014-03-04 16:39:08

标签: java swing


我用按钮创建了框架,当按下它时,所有内容都被删除并替换为新内容。但是我无法显示标签,这是我的代码:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    getContentPane().removeAll();

    jLabel2 = new javax.swing.JLabel();
    jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12));
    jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    jLabel2.setText("Hello World!");
    jLabel2.setLocation(80, 80);
    jLabel2.setVisible(true);

    getContentPane().add(jLabel2);

    getContentPane().repaint();
    pack();
}

我做错了什么? :(

3 个答案:

答案 0 :(得分:2)

而不是repaint()尝试validate()

答案 1 :(得分:1)

不要尝试删除所有内容并添加新组件,而是使用CardLayout,这将“分层”面板,让您在它们之间导航。请参阅How to use CardLayout,您可以看到一个简单示例here

您还可以查看如何将CardLayoutNetbeans GUI Builder here

一起使用

答案 2 :(得分:1)

您应该使用validate()代替repaint。你的其他资源看起来很好。

  

validate方法用于使容器再次布置其子组件。在显示容器后修改此容器的子组件(添加到容器中或从容器中删除,或更改布局相关信息)时,应调用它。