#java #swing #jframe #window
Вопрос:
Мне любопытно, как Java на самом деле создает JFrame в swing; как волшебным образом появляется окно? Итак, я пошел дальше и посмотрел исходный код для JFrame, а в итоге нашел исходный код для класса Window.
В классе Window происходит так много всего, что я не могу сказать, что намекает на инициализацию отображаемого окна. Я новичок, и даже если это действительно материал высокого уровня, я все равно хочу увидеть реальный код для создания окна.
Может быть, я смотрю не на то, что нужно. Если бы кто-нибудь мог указать мне правильное направление или предоставить ссылки, это было бы здорово.
Редактировать:
Если кого-то смущает то, о чем я пытаюсь спросить, скажите, что вы должны были создать окно, похожее на JFrame, но с нуля, как бы это было сделано? Как это делается в swing?
Комментарии:
1. допустим, вы должны были создать окно, похожее на JFrame, но с нуля, — зачем вам тратить время на попытки изобрести колесо? Я новичок , поэтому вам следует потратить время на то, чтобы научиться правильно использовать свинг. Начните с уроков по качанию . Именно так вы узнаете о свинге и о том, как его использовать. Именно так вы узнаете о том, как Swing рисует все компоненты.
2. @camickr спасибо за комментарий. Я знаю, как в значительной степени использовать swing, но я не осведомлен о том, как все работает за кулисами. Для меня выяснение того, как изобрести колесо, более ценно, чем знание того, как работать с колесом, и именно поэтому мне интересно создание окна
3. Код, который создаст «окно с нуля», будет «родным» кодом, кодом, который напрямую адресует системные вызовы ОС, и для этого вам потребуется C, C или какой-либо другой язык, который обеспечивает тесные связи с операционной системой. Java была создана специально для того, чтобы быть не зависящей от операционной системы, и поэтому не будет выбранным языком для этой задачи.
4. @Судно на воздушной подушке, полное угрей Да, я думаю, что понял это из ответа, так что, думаю, теперь я сосредоточен на собственном коде. Вы знаете, где может находиться этот код? Скажем, для операционной системы Windows, не могли бы вы указать мне правильное направление? Или, может быть, доступ к этому машинному коду не так прост, как кажется?
5. Я не видел никакого собственного кода, которым могли бы поделиться люди, работающие на Java. Если бы это были мои деньги, и я бы занялся этим, я бы посмотрел, как люди C/C делают это, а затем поэкспериментировал с моими собственными попытками кода в этом.
Ответ №1:
Window (или более формально java.awt.Window) — это Java-API для окна собственного инструментария платформы. Все современные операционные системы (которые в любом случае поддерживают отображение) поставляются с набором инструментов.
JFrame и Swing были вторичной попыткой предоставить инструментарий пользовательского интерфейса (UI) на Java, который выглядел бы и работал одинаково в нескольких операционных системах. Классы в java.awt, такие как Frame и Dialog, были первой попыткой, но у них были собственные одноранговые классы (см. java.awt.Одноранговый код, скомпилированный на C/C ), и они отображались и выполнялись совершенно по — разному в разных операционных системах.
Итак, что происходит под капотом, так это то, что JFrame сначала создает самое базовое окно из набора инструментов ОС, а затем переодевает его (добавляет строки меню, полосы прокрутки и т. Д.) В JFrame или JDialog В самих классах Java swing.
Комментарии:
1. Спасибо за ответ! Я думаю, что это проясняет для меня некоторые вещи, поэтому вы думаете, что могли бы предоставить ссылку на то, как создается базовое окно из инструментария ОС Windows?
2. @LuckyBandit74 В каждой операционной системе все будет по-разному. Вот ссылка для доступа к инструментарию Windows: docs.microsoft.com/en-us/windows/apps/winui/winui2