#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. Я имел в виду без использования вещей, которые были созданы с конкретной целью только создания окна. Прочитайте мой комментарий полностью.