Java JFrame очень странный - PullRequest
       6

Java JFrame очень странный

2 голосов
/ 27 марта 2010

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

  }

}

Ответы [ 4 ]

3 голосов
/ 27 марта 2010

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

1 голос
/ 27 марта 2010

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

Что если вы измените main(), чтобы вызывать код GUI в потоке Swing, как это?

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            FrmTaoLogin FrmLogin = new FrmTaoLogin();
            FrmLogin.setVisible(true);
        }
    });
}
0 голосов
/ 27 марта 2010

Спасибо всем, проблема решена. Я меняю тему Windows и все работает нормально. Я думаю, что это Windows Aero и моя проблема с NVIDIA GeForce FX5500. Эта карточка чиновника не работает с windows Aero.

0 голосов
/ 27 марта 2010

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

...