Я новичок в Java, да и в программировании вообще. Начал её изучать, сейчас разбираюсь с GUI, пишу простенький калькулятор, но почему то в GUI билдере мой скелет выглядит так:, а на практике - вот так:
Как это решить? Заранее спасибо.
Стиль при разработке 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
, которое отображает графический интерфейс системными средствами. Для любителей нативного интерфейса - отличное решение, но за него придётся поплатиться разными сборками, под разные платформы.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне очень нужна помощьНе знаю как сделать POST запрос по этому API: http://smktesting
Вообщем проблема такая: мне нужно из текстового файла сделать ArrayList из массивов int[], я разбиваю каждую строку, и в цикле добавляю массивы в лист,...