Я разрабатываю Настольное приложение Java. В нем я имею 4 JButtons
на a JPanel
. Теперь я хочу это каждый раз, когда кнопка нажата ее изменения цвета фона в некотором другом цвете (скажите оранжевый) для представления этого, это было нажато и цвет фона всех других 3 сброса кнопок к их цвету по умолчанию (в случае, если у любого из них был Оранжевый цвет фона).
Так, когда-то только одна кнопка может иметь оранжевый цвет.
Текущий подход, который я применил, состоит в том, что я реализовал следующий код в xxxActionPerformed()
метод JButton button1
button1.setBackground(Color.Orange);
button2.setBackground(Color.Gray);
button3.setBackground(Color.Gray);
button4.setBackground(Color.Gray);
и так же для остальных три кнопки.
Теперь в фактическом, я не хочу цвета backgroud как Gray (для ненажатой кнопки). Вместо этого я хочу цвет фона по умолчанию так, чтобы цвет backgroud скорректировал себя к стилю GUI согласно стилю платформы конечного пользователя.
Q1. Как я могу получить цвет фона по умолчанию?
Q2. Действительно ли это - корректный подход, чтобы сделать это или Является там каким-либо другим механизмом, через который я могу сгруппировать все эти четыре кнопки в группе кнопок так, чтобы только один мог иметь указанное свойство когда-то (как переключатели)?
Просто используйте NULL
, чтобы использовать цвет по умолчанию:
Button1.Setbackgroundground (Color.Orange);
Button2.Setbackground (NULL);
...
Рассмотрите возможность использования JToggleButtons с помощью кнопок кнопок, установите значок и нажмите кнопки. Не нужно менять цвет фона.
Button1 = New JtoggleButton (New Imageicon («0.jpg»));
button1.setseledicon (New Imageicon («1.jpg»));
button2 = new jtogglebutton (new imageicon ("0.jpg"));
Button2.setseledicon (New Imageicon («2.jpg»));
...
ButtonGroup Group = новая кнопка групп ();
group.add (button1);
group.add (button2);
...
Вот сечение "Кнопки.фона" на основе этого примера :
*** Metal javax.swing.plaf.metal.MetalLookAndFeel 636 entries Button.background: javax.swing.plaf.ColorUIResource[r=238,g=238,b=238] *** Nimbus com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel 1052 entries Button.background: com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel$NimbusProperty@60961dff *** CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel 550 entries Button.background: javax.swing.plaf.ColorUIResource[r=174,g=178,b=195] *** Mac OS X com.apple.laf.AquaLookAndFeel 705 entries Button.background: com.apple.laf.AquaNativeResources$CColorPaintUIResource[r=238,g=238,b=238]
Q1.: Чтобы получить графический интерфейс кнопки, просто сделайте это
button1.setBackground(Color.Orange);
button2.setBackground(java.awt.SystemColor.control);
button3.setBackground(java.awt.SystemColor.control);
button4.setBackground(java.awt.SystemColor.control);
с этим классом (Java.awt.systemcolor. *), Вы можете получить цвет всех элементов вашего пользовательского интерфейса.
Q2.: Я никогда не слышал о группировках кнопок. Затем я не могу ответить на вас этот.
Надеюсь, это поможет.
Вы можете получить стандартный цвет фона для кнопок от Uimanager:
button1.setBackground(UIManager.getColor("Button.background"));
Насколько я знаю, ключи могут измениться в разных взглядах и чувствовать себя. Вот хорошее приложение Webstart, которое показывает все доступные клавиши:
http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/