Недекорированная граница JDialog

У меня есть вопрос относительно границы вокруг недекорированного JDialog с помощью Metal L&F.

Посмотрите на эту картинку, чтобы увидеть границу, которая находится на этом окне:

введите здесь описание изображения

Я пытаюсь понять, как избавиться или изменить цвет синей границы вокруг самой внешней стороны JDialog. Я просмотрел настройки пользовательского интерфейса по умолчанию для Look & Feel, но не смог найти ничего подходящего для этого.

У кого-нибудь есть идеи, как избавиться от этой границы?

Спасибо!


person Mark    schedule 01.07.2013    source источник
comment
Может ли мой ответ на другой вопрос вам помочь?   -  person Jun    schedule 24.09.2015


Ответы (3)


Вам нужно изменить Border корневой панели:

getRootPane().
   setBorder( BorderFactory.createLineBorder(Color.RED) );
person camickr    schedule 01.07.2013

Если вы хотите избавиться от него, вы можете использовать

frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);

Чтобы изменить его внешний вид из стиля Java в стиль Windows, вы можете использовать

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
person user2526311    schedule 01.07.2013
comment
Это не делает то, что я хочу. Мне нужно, чтобы строка заголовка оставалась наверху, а рамка не была украшена. Единственный способ сделать это — использовать внешний вид и ощущение металла. Установка стиля оформления окна на none позволяет избавиться от строки заголовка вверху. - person Mark; 02.07.2013

Вы можете сделать что-то вроде этого:

((JPanel)getContentPane()).setBorder(BorderFactory.createLineBorder(Color.BLUE));

введите здесь описание изображения


Вы можете попробовать сделать это, чтобы изменить самую внешнюю границу:

getRootPane().setBorder(BorderFactory.createLineBorder(Color.BLUE));

Это то, что вы хотите сделать?

person Maroun    schedule 01.07.2013
comment
getRootPane() находится внутри границы - автор указал на внешнюю границу неукрашенного JDialog - person Tamara Koliada; 03.01.2019