[英]Java UIManager - Change ComponentsStyle
I want to change my componentstyle by using UIManager. 我想通过使用UIManager来改变我的组件风格。
For example: 例如:
I click on a Button and the Button foreground changes from black to green. 我点击一个按钮,按钮前景从黑色变为绿色。 The same for a JCheckbox.....
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
! 在我的例子中,更改只适用于
Button.gradient
....我没有获得Button.foreground
更新,也没有更新JCheckbox
!
Here my UIManagerClass: 这是我的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);
}
}
and here my Buttondemo/Main-Class: 在这里我的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
has Icon
JCheckBox
/ JRadioButton
有Icon
have to change own Icon
to concrete JCheckBox
/ JRadioButton
or put then to the UIManager
, then apply for whole JVM instance 必须将自己的
Icon
更改为具体的JCheckBox
/ JRadioButton
或者然后放到UIManager
,然后申请整个JVM实例
for more infos have to check UIManager Defaults and Key Bindings by camickr 更多信息必须通过camickr检查UIManager Defaults和Key Bindings
most of your potential issues is descibed in Creating a custom button in Java with JButton 使用JButton在Java中创建自定义按钮时 ,可以解决大部分潜在问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.