Воссоздание оконно-ориентированной границы JFrame или JDialog

Мне нужно воссоздать полупрозрачную границу JFrame или же JDialog это появляется при настройке окна выглядят и чувствуют себя в разгаре.

Мне это нужно, так как Windows LaF не позволяет получить доступ к строке заголовка (на границе). На самом деле мне нужно применить MouseAdapter к JDialog который получает уведомление при перетаскивании / нажатии / отпускании. В Windows LaF, поскольку вы не можете получить доступ к компоненту панели, вы можете только применить ComponentListener который дает вам уведомление только при перемещении (таким образом, вы ничего не захватываете, когда пользователь захватил это, но еще не перемещалось, или когда пользователь "отпускает" это).

Поэтому я решил использовать недекорированные диалоги и применить слушателей к моей пользовательской панели. Однако я хочу, чтобы пользовательский диалог выглядел точно так же, как в Windows LaF (это означает, что мне нужно воссоздать границу).

Я не очень опытен в Graphics2D, чтобы переопределить paintBorder() метод, поэтому я прошу вашей помощи. Кто-нибудь когда-нибудь сталкивался с этой проблемой и имеет проверенное решение?

Заранее спасибо.

1 ответ

Начиная с Java Platform, выпуска Standard Edition 6 (Java SE 6) Update 10, вы можете добавлять полупрозрачные и фигурные окна в свои приложения Swing.

Это означает, что вы можете иметь свой JFrame эмулировать родное окно с закругленными углами и прозрачностью.

В вашем случае ваш подход будет в JFrame уровень вместо уровня границы, потому что граница окрашена в верхней части JFrame (или же JDialog, в этом отношении). Поэтому, если JFrame еще не округлено, например, paintBorder() Метод по-прежнему будет рисовать поверх прямоугольной области экрана.

Посмотрите этот урок от Oracle, охватывающий форму и прозрачность JFrame,

Другие вопросы по тегам