Java UIManager-更改ComponentsStyle [英] Java UIManager - Change ComponentsStyle
问题描述
我想通过使用UIManager来更改组件样式.
I want to change my componentstyle by using UIManager.
例如:
我单击一个按钮,然后按钮前景从黑色变为绿色.对于JCheckbox也是一样.....
I click on a Button and the Button foreground changes from black to green. The same for a JCheckbox.....
在我的示例中,更改仅适用于Button.gradient
....我没有获得Button.foreground
的任何更新,也没有获得JCheckbox
的任何更新!
In my example the changes just work for the Button.gradient
.... I get no update for Button.foreground
and no update for the JCheckbox
!
这是我的UIManagerClass:
Here my UIManagerClass:
package components;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.SwingUtilities;
public class OwnUiManager {
ButtonDemo Bd;
OwnUiManager(ButtonDemo aThis) {
Bd = aThis;
}
public void setNormal() {
ArrayList<Object> gradients = new ArrayList();
gradients.add(0.3);
gradients.add(0.0);
gradients.add(new Color(221, 232, 243));
gradients.add(new Color(255, 255, 255));
gradients.add(new Color(184, 207, 229));
javax.swing.UIManager.put("RadioButton.background", Color.PINK);
javax.swing.UIManager.put("Button.gradient", gradients);
javax.swing.UIManager.put("Button.foreground", Color.PINK);
SwingUtilities.updateComponentTreeUI(Bd);
}
public void setNightVision() {
System.out.println("Tes");
ArrayList<Object> gradients = new ArrayList();
gradients.add(0.18f);
gradients.add(0.17f);
gradients.add(Color.BLACK);
gradients.add(Color.DARK_GRAY);
gradients.add(Color.DARK_GRAY);
javax.swing.UIManager.put("RadioButton.background", Color.GRAY);
javax.swing.UIManager.put("Button.gradient", gradients);
javax.swing.UIManager.put("Button.foreground", Color.red);
SwingUtilities.updateComponentTreeUI(Bd);
}
}
还有我的Buttondemo/Main-Class:
and here my Buttondemo/Main-Class:
package components;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class ButtonDemo extends JPanel
implements ActionListener {
protected JButton b1,b2;
private JRadioButton b3;
public ButtonDemo() {
b1 = new JButton("ON");
b1.addActionListener(this);
add(b1);
b2 = new JButton("OFF");
b2.addActionListener(this);
add(b2);
//For Testing the Style
b3=new JRadioButton("Test");
add(b3);
}
public void actionPerformed(ActionEvent e) {
OwnUiManager test = new OwnUiManager(this);
if (e.getSource().equals(b1)) {
test.setNormal();
} else {
test.setNightVision();
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("ButtonDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ButtonDemo newContentPane = new ButtonDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
推荐答案
-
JCheckBox
/JRadioButton
具有Icon
必须将自己的
Icon
更改为具体的JCheckBox
/JRadioButton
或将其放入UIManager
,然后申请整个JVM实例have to change own
Icon
to concreteJCheckBox
/JRadioButton
or put then to theUIManager
, then apply for whole JVM instance有关更多信息,请检查 UIManager默认值和键绑定(由camickr
for more infos have to check UIManager Defaults and Key Bindings by camickr
这篇关于Java UIManager-更改ComponentsStyle的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!