как я могу изменить цвет заголовка в JFrame?

Я использую следующий код,

UIManager.put("JFrame.activeTitleBackground", Color.red);

для изменения цвета панели инструментов в JFrame. Но это не сработало.

Можно ли изменить цвет заголовка в JFrame?


person Venkat    schedule 20.03.2010    source источник
comment
Мне кажется, что два парня работают над одной и той же домашней задачей. Стечение обстоятельств?   -  person duffymo    schedule 20.03.2010
comment
Возможно, не домашняя работа, но точно такая же проблема!   -  person Brian Agnew    schedule 20.03.2010
comment
Подождите, один парень хочет изменить цвет строки заголовка, но Венкатс говорит о панели инструментов, которая обычно понимается как область под меню, содержащая основные кнопки (открыть, сохранить, скопировать, вставить и т. д.). .)   -  person Thomas    schedule 20.03.2010
comment
вы не можете изменить цвет панели инструментов JFrame или цвет строки заголовка окна?   -  person hecvd    schedule 20.03.2010


Ответы (6)


Это невозможно. JFrame верхнего уровня управляется внешним видом базовой ОС.

Вы МОЖЕТЕ изменить цвет InternalFrame.

person Andrew Dyster    schedule 25.03.2010
comment
Это возможно с некоторыми пакетами внешнего вида или пользовательским кодом внешнего вида. Ниже приведен пример из user1781452. - person Enwired; 21.10.2016
comment
В Java 8 ответ с использованием UIDefaults с ключом activeCaption работает отлично. - person Claude; 02.11.2018

Для Windows10 в вашем основном методе вы можете использовать:

UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.gray));
uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.white));
JFrame.setDefaultLookAndFeelDecorated(true);
person Community    schedule 27.02.2018
comment
Это не работает. В win7 отображается заголовок стеклянного окна по умолчанию. - person Gee Bee; 08.03.2018
comment
Проголосовал JFrame.setDefaultLookAndFeelDecorated(true); - person Roberto Tellez Ibarra; 26.04.2018

Я думаю, что цель состоит в том, чтобы добиться реального вида приложения на Win10. Поскольку изменить цвет заголовка окна на самом деле невозможно, единственный способ — настроить окно.

Хотя примеры установки варианта Metal LAF дают хороший пример, я обнаружил, что эта проблема сложнее. Настоящее окно Win10 должно иметь границу win10, прозрачную границу (тень), которую пользователь может перетаскивать для изменения размера. В заголовке должны использоваться значки Win10 и зависания для оконных кнопок.

Я бы f.setUndecorated(true); и нарисовать его самостоятельно, и установить вставки окна так, чтобы содержимое работало как обычно.

(Мелкий шрифт: хотя мы все «знаем», что Swing можно настроить с помощью LAF, в реальной жизни написание LAF всегда намного сложнее, чем просто создание подклассов и рисование собственного оформления. В качестве дополнительной проблемы архитектура LAF не выражают все свойства компонента, а «родной» LAF довольно далек от нативного внешнего вида (например, проверьте выпадающий список win7) или ощущения (выпадающие меню не выскальзывают, выпадающие меню win7 не имеют зависания, но кнопки есть). не говоря уже об отсутствии Windows-подобных компонентов, таких как приличная лента Office 2016 или даже простой «переключатель» Win10. Действительно, вы не можете сделать слишком много, не заваривая свои собственные компоненты.)

person Gee Bee    schedule 07.03.2018

Я знаю, что немного опоздал, но это может помочь другим:

Я обыскал весь Интернет, чтобы найти способ изменить всю тему моего приложения на основе свинга. затем я нашел статью об этом:

Кто-то может сказать:

Это невозможно и контролируется ОС.

Если вы хотите получить доступ к строке заголовка, во-первых, у вас должен быть доступ к собственным библиотекам движка Java. К счастью, есть способ:

Первый шаг: JNA предоставляет Java-программам легкий доступ к родным общим библиотекам без написания чего-либо, кроме кода Java. Таким образом, вы можете использовать этот репозиторий для доступа к ним: JNA.

Scroll down to readme and find the downloadable library.

Некоторые элементы могут откладываться в зависимости от используемой вами платформы. Поэтому убедитесь, что вы используете jna-platform-5.8.0.jar, чтобы ваше приложение было совместимо с любыми платформами.

Второй шаг: если вы не знаете, как использовать библиотеки JNA, вы можете использовать это в качестве примера: пример

в любом случае, это может решить вашу проблему с цветом строки заголовка;)

Основная статья: Внешняя ссылка

Help me improve my writing in English by telling me my mistakes :D

person Ali Fanni    schedule 02.06.2021

person    schedule
comment
Хороший пример. Однако это не только меняет цвет, но и устанавливает новый LAF, который делает приложение похожим на 90-е. :) - person Gee Bee; 08.03.2018

person    schedule
comment
OP запрашивает изменение цветов JFrame. Ответ для внутренних рамок. - person Gee Bee; 08.03.2018