当我运行此,JLabel的是不可见的,但是当我调整窗口(带鼠标)的JLabel被显示。为什么?

import javax.swing.*;
import java.awt.*;

public class FrmTaoLogin extends JFrame {

  private JPanel pnlLeft = new JPanel();

  public FrmTaoLogin() {

    super();

    pnlLeft.setBorder(BorderFactory.createEtchedBorder());
    pnlLeft.add(new JLabel("test1"));
    getContentPane().add(pnlLeft,BorderLayout.SOUTH);

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(200, 200); 

  }

  public static void main(String[] args) {

    FrmTaoLogin FrmLogin = new FrmTaoLogin();
    FrmLogin.setVisible(true);

  }

}
有帮助吗?

解决方案

这看起来像一些在以前的Java虚拟机的L&F的错误在较新的操作系统。例如在Windows 7最多的问题与1.6.0_17首先解决。你应该有一个控制台启动程序。如果你看到在事件线程中的一些踪迹,然后它是一个L&F错误的问题。

其他提示

IIRC,出现这种情况时,你不叫Frame.pack()。如果你调用它应该工作“包()”作为构造函数的最后一行。

我怀疑这里的问题可能都与试图建立与外界展现你的GUI组件的 Swing线程

如果你改变main()调用Swing线程在你的GUI代码,这样的吗?

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            FrmTaoLogin FrmLogin = new FrmTaoLogin();
            FrmLogin.setVisible(true);
        }
    });
}

感谢所有,问题解决。我更改Windows主题,所有工作的罚款。我认为这是Windows Aero的和我的NVIDIA GeForce FX 5500的问题。此卡官方不使用窗口的Aero。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top