题
当我运行此,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。
不隶属于 StackOverflow