Вопрос

Когда я запускаю это, 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);

  }

}
Это было полезно?

Решение

Это похоже на некоторые ошибки L & F в старых виртуальных машинах Java на более новой ОС.Например, в Windows 7 большинство проблем решается сначала с помощью 1.6.0_17.Вы должны запустить свою программу с консоли.Если вы видите какие-то трассировки стека в потоке событий, то это проблема с ошибкой L & F.

Другие советы

IIRC, это происходит, когда вы не вызываете Frame.pack().Это должно сработать, если вы вызовете 'pack()' в качестве последней строки конструктора.

Я подозреваю, что проблема здесь может быть связана с попыткой создать и показать ваши компоненты GUI за пределами Качающаяся нить.

Что, если ты изменишься main() чтобы вызвать ваш графический код в потоке Swing, вот так?

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 FX5500.Эта официальная карта не работает с Windows Aero.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top