做一个swing的界面,用了jtattoo的一个LookAndFeel的包。在里面用一个JComboBox来切换界面,切换后用了SwingUtilities.updateComponentTreeUI(this);来更新LookAndFeel。但是切换的过...
做一个swing的界面,用了jtattoo的一个LookAndFeel的包。
在里面用一个JComboBox来切换界面,切换后用了
SwingUtilities.updateComponentTreeUI(this);来更新LookAndFeel。
但是切换的过程中,如果每次选择的都是没有用过的LookAndFeel,则显示正常;一旦选择了用的的LookAndFeel,边框就无法完全更新。
求教高手!!!
部分代码如下:
// ComboBox的响应方法
private void style_CboxActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String name = (String) style_Cbox.getSelectedItem();
updateStyle(name);
pack();
}
// 更新LookAndFeel的方法
public void updateStyle(String name) {
try {
//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
if (name == "Aluminium") {
UIManager.setLookAndFeel(aluminium);
} else if (name == "Aero") {
UIManager.setLookAndFeel(aero);
} else if (name == "McWin") {
UIManager.setLookAndFeel(mcwin);
} else if (name == "Luna") {
UIManager.setLookAndFeel(luna);
} else if (name == "Mint") {
UIManager.setLookAndFeel(mint);
} else if (name == "Smart") {
UIManager.setLookAndFeel(smart);
} else if (name == "Acryl") {
UIManager.setLookAndFeel(acryl);
} else if (name == "Fast") {
UIManager
.setLookAndFeel(new com.jtattoo.plaf.fast.FastLookAndFeel());
}
SwingUtilities.updateComponentTreeUI(this);
SwingUtilities.updateComponentTreeUI(chDlg);
this.repaint();
update_UI();// 一个自设的方法,不用管
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
以上setLookAndFeel方法中的参数都是各种LookAndFeel的对象,例如:
MintLookAndFeel mint = new MintLookAndFeel();
回复1楼:
好像UIManager里没有getDefaults()这个方法。。有的话,类型也不是LookAndFeel
能不能给具体点?谢谢!
展开