powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните простой пример со Swing
8 сообщений из 8, страница 1 из 1
Объясните простой пример со Swing
    #39011043
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени,

Обычное ГУИ приложение:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
import java.awt.EventQueue;
import javax.swing.JFrame;

public class SimpleEx extends JFrame {

    public SimpleEx() {

        initUI();
    }

    private void initUI() {
        
        setTitle("Simple example");
        setSize(300, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
        
            @Override
            public void run() {
                SimpleEx ex = new SimpleEx();
                [color=red]ex.setVisible(true);[/color]
            }
        });
    }
}



Почему ex.setVisible(true); находится в методе run()
Если setVisible(true); можно поставить после setDefaultCloseOperation(EXIT_ON_CLOSE); в методе initUI() ?

Почти во всех пример такое встречаю, не могу понять зачем так делают
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011064
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. Gray,
imho
показываться или не показываться на экране прерогатива того кто создаёт объект. А не самого себя в конструкторе.
По ООП.
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011077
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Cpt. Gray,
imho
показываться или не показываться на экране прерогатива того кто создаёт объект. А не самого себя в конструкторе.
По ООП.
Можете поподробнее?
"Видимость" это же атрибут самого фрейма, почему бы тогда не устанавливать его вместе с остальными атрибутами (заголовком и размерами и тд) в конструкторе?

Как правильно делать, чтобы все было по фэн-шую? Так как в примере?
Или же еще в других примерах видел, что в методе run() перед ex.setVisible(true); ставят ex.setDefaultCloseOperation(EXIT_ON_CLOSE); ?
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011097
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. GrayМожете поподробнее?
"Видимость" это же атрибут самого фрейма, почему бы тогда не устанавливать его вместе с остальными атрибутами (заголовком и размерами и тд) в конструкторе?

1) Это не критично на простейшем примере.
2) Если запхать setVisible(true) в конструктор, то код, который использует этот фрейм не сможет создать объект, поменять состояние объекта и только затем показать окно. Таким образом вы бы лишили клиентский код гибкости. И в случае острой надобности так сделать, пришлось бы переписывать готовый класс SimpleEx
3) Рантайм всегда хорошо разбивать на фазы и методы. И если рассмотреть жизненый цикл окна внимательно, то мы получим следующее.
- Создать объект
- Создать структуру UI - неизменяемые свойства
- Проинициализировать значения свойств по-умолчанию
- Установить значения свойств для конкретного сценария использования, которые отличают от значений по-умолчанию
- Показать окно пользователю
...

Так вот в этом сценарии, если мы начнем перемешивать эти фазы, то в них будет сложно вносить изменения. Конечно, такие фазы на примитивных примерах не очевидны, но когда они начинают формироваться в коде, лучше сразу их реализовывать отдельными блоками и методами, чтобы в будущем не тратить время на рефакторинг спагетти кода.
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011100
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz"Видимость" это же атрибут самого фрейма, почему бы тогда не устанавливать его вместе с остальными атрибутами (заголовком и размерами и тд) в конструкторе?

Потому что "видимость" это не простой атрибут, это атрибут, который меняет критическое состояние окна.
Если установить атрибуты, а потом вызвать setVisible, то мы получим готовое к использованию окно.
Если установить setVisible, а потом атрибуты, то мы получим динамическое отображение всех изменений на экране.
Именно поэтом порядок вызова других атрибутов и setVisible важен, именно поэтому это свойство такое особенное.
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011108
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz +1
Cpt. Gray,
создание окно может быть рессурсоёмким (табла тыщи записей).
Потом поёдёт событе onCreate
А потом ты уже свою строку - Показать.
Всё логично.
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011112
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Потом поёдёт событе onCreate
на которое может быть подписан совсе другой программист в совсем другом коде.
...
Рейтинг: 0 / 0
Объясните простой пример со Swing
    #39011119
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. GrayКак правильно делать, чтобы все было по фэн-шую? Так как в примере?
Договоритесь в организации.
"Маленькие окна" можно в конструкторе. По умолчанию.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните простой пример со Swing
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]