Возможно ли создать окно на Java без использования JFrame или чего-либо подобного?

#java #window

#java #окно

Вопрос:

Я некоторое время использовал Java для разработки приложений и всегда делал что-то подобное для создания окна:

 JFrame frame = new JFrame();
  

И все же, как бы я приступил к созданию окна без использования JFrame или класса Frame? Что на самом деле происходит, когда я это делаю, и возможно ли это сделать на Java без этого или мне нужно будет использовать язык более низкого уровня, такой как C или Assembly?

Комментарии:

1. Хо-хо, извините, что отвечаю на ваш вопрос вопросом, но почему бы вам не захотелось использовать Swing? Тем более, что вы некоторое время использовали Java для разработки приложений?

2. Джо, дело не в нежелании использовать swing — я хочу посмотреть, как это работает на более низком уровне.

3. Вам нужно будет использовать JNI / JNA, это позволит вам создать окно в соответствии с вашими потребностями. Проблема после этого действительно смогла бы к нему что-либо прикрепить. Компоненты Swing используют общий собственный одноранговый узел (или окно) и создаются с помощью внутренней встроенной структуры для его поддержки. Итак, да, хотя это и возможно, конечная функциональность очень ограничена…

4. Имейте в виду, разработчики Java очень непреклонны в отношении использования Swing. Будьте готовы выдержать много флейминга.

5. рассмотрим SWT eclipse.org/swt

Ответ №1:

Взгляните на JFrame иерархию.

Вы можете создать window на java, используя JFrame или его суперкласс JWindow . Вы также можете использовать java.awt.Frame и его суперкласс Window . Во всех этих случаях вы можете создать окно (с точки зрения операционной системы).

Комментарии:

1. Да, я сделал. Я так это понял. В конце концов, Window использование WindowPeer вызывает собственный API, поэтому, если OP хочет знать, как это работает, он может изучить исходный код упомянутых классов.

2. Я хотел сделать это, не используя ничего, что было предварительно запрограммировано для конкретной цели создания окна.

3. Я не понимаю термин «без предварительного программирования». Когда вы пишете код, вы всегда используете какую-то стороннюю программу. Даже когда вы программируете в режиме ядра. Очевидно, что вы можете использовать JNI / JNA для вызова native API, но зачем вам вообще java в этом случае?

4. Я имел в виду без использования вещей, которые были созданы с конкретной целью только создания окна. Прочитайте мой комментарий полностью.