Очень простой JFrame не появляется - PullRequest
0 голосов
/ 10 ноября 2019

Я знаю, что этот вопрос задавался много раз, и я пробовал решения, упомянутые там в течение последнего часа, но ни один из них не работал для меня. У меня очень простой кадр, и он просто не отображается . Нет ошибок, после компиляции просто "Build успешно".

Весь код:

import javax.swing.*;
import java.awt.*;

public class Frame extends JFrame
{    
    public Frame()
    {
        super("Hello");
        this.setBounds(100, 500, 100, 100);
        this.setDefaultCloseOperation(3);
    }

    public static void main(String[] args) 
    {
        new Frame().setVisible(true);
    }
}

Заранее спасибо за вашу помощь.

Ответы [ 4 ]

1 голос
/ 12 ноября 2019

Начните с прочтения учебника по Swing на Как создавать кадры .

Загрузите и протестируйте пример FrameDemo. Он покажет вам правильный способ создания компонентов Swing. Одним из ключей является то, что компоненты Swing должны создаваться в измененном потоке диспетчеризации событий (EDT).

Если этот код не работает, возможно, у вас что-то не так с вашим JDK. Попробуйте переустановить.

1 голос
/ 10 ноября 2019

Я попробовал вашу программу, и фрейм показывает хорошо для меня. Пара шагов, которые вы можете попробовать -

  1. После запуска программы вы должны проверить в диспетчере задач, является ли новый процесс Java видимым, и если это так, разверните его, и вы должны увидеть «Hello», попробуйтевывод на передний план (щелкните правой кнопкой мыши по процессу -> Перевести на передний план).
  2. С точки зрения кода попробуйте добавить this.pack(); после this.setDefaultCloseOperation и перезапустить программу.
1 голос
/ 10 ноября 2019

Я думаю, что ваш экземпляр Frame в main взят из пакета java.awt. *, Который вы импортировали. Проверьте это.

0 голосов
/ 10 ноября 2019

Я не вижу проблем с вашей программой. Я только что попробовал следующую программу, и фрейм появился без проблем:

import javax.swing.JFrame;

public class Frame extends JFrame {
    public Frame() {
        super("Hello");
        this.setBounds(100, 500, 100, 100);
        this.setDefaultCloseOperation(3);
    }

    public static void main(String[] args) {
        new Frame().setVisible(true);
    }
}

Я думаю, вы должны изменить значения в this.setBounds(100, 500, 100, 100) и попробовать снова.

...