Java JFrame は非常に奇妙です
質問
これを実行しているとき、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);
}
}
解決
新しいOSに古いのJava VMでL&Fのバグのいくつかのようなこの表情。 Windows 7で例えばほとんどの問題は、1.6.0_17で最初に解決されます。コンソールを使用してプログラムを起動する必要があります。あなたがイベントスレッドでいくつかのスタックトレースが表示された場合、それはL&Fのバグの問題です。
他のヒント
IIRCは、これはあなたがFrame.packを呼び出さないとき()が起こります。あなたは、コンストラクタの最後の行として「パック()」を呼び出す場合は動作するはずです。
ここでの問題は、GUI コンポーネントを外部でビルドして表示しようとしたことに関係があるのではないかと思います。 スイングスレッド.
変わったらどうしますか 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の問題だと思います。このカードの公式は、Windowsで作業していないエアロます。
所属していません StackOverflow