Java JFrame, не показывает содержимое сразу, но после минимизации + восстановления

1
public class GUI extends JFrame implements ActionListener {
   ...//some global variables
  public GUI ()
  {
    super("Closest Word Automaton");
    this.setSize(1000, 640);
    this.setVisible(true);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setLayout(new CardLayout());

    initArray();

    JTabbedPane tabs = new JTabbedPane();
    tabs.add("Edit View", createEditView());
    tabs.add("Automaton View", createAutomatonView());
    tabs.add("Levenshtein Distance Calculator", createLevCalculator());
    this.add(tabs);

    addListener();

  }

У меня странная проблема с моим JFrame, когда я запускаю программу в Eclipse, графический интерфейс появляется следующим образом: http://i.imgur.com/hNtucMo.jpg, который не должен происходить, поскольку он должен выглядеть так: http://i.imgur.com/ph0TV3C.jpg однако проблема устраняется после минимизации и восстановления окна Jframe. Почему это происходит и как я могу его исправить, чтобы правильно отобразить GUI сразу после запуска программы?

(Проблема также возникает и на других компьютерах)

Теги:
swing

1 ответ

3
Лучший ответ

После добавления всех ваших компонентов установите свой кадр в видимый.

public class GUI extends JFrame implements ActionListener {
   ...//some global variables
  public GUI ()
  {
    super("Closest Word Automaton");
    this.setSize(1000, 640);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setLayout(new CardLayout());

    initArray();

    JTabbedPane tabs = new JTabbedPane();
    tabs.add("Edit View", createEditView());
    tabs.add("Automaton View", createAutomatonView());
    tabs.add("Levenshtein Distance Calculator", createLevCalculator());
    this.add(tabs);

    this.pack();
    this.setVisible(true);  //setVisible to true after adding components

    addListener();
  }

Заметьте, что я назвал this.pack(). Это приведет к правильной настройке размера JFrame и, следовательно, правильному размеру его дочерних компонентов, поэтому, когда вы setVisible(true) оно будет отображаться правильно.

  • 0
    Это исправило мою проблему, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню