Как изменить стиль в NetBeans?

383
10 июня 2017, 13:52

Я новичок в Java, да и в программировании вообще. Начал её изучать, сейчас разбираюсь с GUI, пишу простенький калькулятор, но почему то в GUI билдере мой скелет выглядит так:, а на практике - вот так:

Как это решить? Заранее спасибо.

Answer 1

Стиль при разработке GUI приложений на Java с использованием Swing определяется с помощью LookAndFeel - темы, отвечающей за отображение и поведение элементов.

По умолчанию используется тема Metal, именно её вы видите на втором скриншоте. Если не устанавливать тему специально, то именно она будет отображаться.

Всё это вытекает из того, что для обеспечения кроссплатформенности в Swing решили отрисовывать, все элементы с нуля, а не пользоваться системными.

Последний способ же был использован в AWT и не возымел успеха, так как набор инструментов определялся пересекающимся множеством, а т.к. Java запускалась и на очень ограниченных платформах с точки зрения графического интерфейсов, то набор инструментов был минимален.

Поэтому на данный момент в Swing всё рисуют с нуля. Вид, отличный от интерфейса Windows, скорее всего связан с авторскими правами. Хотя говорят, что на виртуальных машинах под Windows есть такой же LookAndFeel имитирующий системный и его можно получить с помощью:

javax.swing.UIManager.getSystemLookAndFeelClassName();

На моей десятке работает.

Сразу же показываю как его установить:

  try {
      //получаем системную тему
      String systemLookAndFeelClassName = javax.swing.UIManager.getSystemLookAndFeelClassName();
       //устанавливаем её
      javax.swing.UIManager.setLookAndFeel(systemLookAndFeelClassName);
  } catch (javax.swing.UnsupportedLookAndFeelException e) {
      e.printStackTrace();
  } catch (Exception e) {
      e.printStackTrace();
  }

После описанных действий лично у меня LookAndFeel стал аналогичен тому что нарисовано в билдере.

Стоит отметить что помимо кросплатформенных AWT и Swing существует также зависимые от платформы решения, в частности SWT, которое отображает графический интерфейс системными средствами. Для любителей нативного интерфейса - отличное решение, но за него придётся поплатиться разными сборками, под разные платформы.

READ ALSO
Как правильно сделать POST запрос Retrofit?

Как правильно сделать POST запрос Retrofit?

Мне очень нужна помощьНе знаю как сделать POST запрос по этому API: http://smktesting

411
Нужна помощь с ArrayList

Нужна помощь с ArrayList

Вообщем проблема такая: мне нужно из текстового файла сделать ArrayList из массивов int[], я разбиваю каждую строку, и в цикле добавляю массивы в лист,...

375