从当前的 LookAndFeel 中查找 Icon
Find Icon from the current LookAndFeel
我有一个正在创建的应用程序 DefaultTreeCellRenderer
。为此,我想显示 File
和 Directory
.
中的默认系统图标
在应用程序开始时,我正在设置系统外观
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
// Set System L&F
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
new App().setVisible(true);
}
});
所有 UI 都具有系统外观。但是当我用我的自定义 DefaultTreeCellRenderer
创建一个 JTree
时,我是 return DefaultTreeCellRenderer#getIcon
下面的 static
字段。
private static final Icon FILE = UIManager.getIcon("FileView.fileIcon");
private static final Icon FOLDER = UIManager.getIcon("FileView.directoryIcon");
结果是默认值来自系统。但是 FILE
和 FOLDER
指向默认的 LookAndFeel
.
如何从系统 Look And Feel
中获取值?拥有所有相同的图标。
But the FILE and FOLDER are pointing to the default LookAndFeel.
那么尝试为您要处理的系统设置 LAF。类似于:
UIManager.setLookAndFeel( laf1 );
Icon laf1Icon = UIManager.getIcon("FileView.fileIcon");
Icon laf1Folder = UIManager.getIcon("FileView.directoryIcon");
UIManager.setLookAndFeel( laf2 );
Icon laf2Icon = UIManager.getIcon("FileView.fileIcon");
Icon laf2Folder = UIManager.getIcon("FileView.directoryIcon");
//...
UIManager.setLookAndFeel( backToTheDefault );
您可以通过查看 UIManager Defaults 查看此方法的结果。随着 LAF 的变化,图标也会发生变化。当然,这仅适用于您系统上可用的 LAF,并非所有可能的远程文件系统。
我有一个正在创建的应用程序 DefaultTreeCellRenderer
。为此,我想显示 File
和 Directory
.
在应用程序开始时,我正在设置系统外观
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
// Set System L&F
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
new App().setVisible(true);
}
});
所有 UI 都具有系统外观。但是当我用我的自定义 DefaultTreeCellRenderer
创建一个 JTree
时,我是 return DefaultTreeCellRenderer#getIcon
下面的 static
字段。
private static final Icon FILE = UIManager.getIcon("FileView.fileIcon");
private static final Icon FOLDER = UIManager.getIcon("FileView.directoryIcon");
结果是默认值来自系统。但是 FILE
和 FOLDER
指向默认的 LookAndFeel
.
如何从系统 Look And Feel
中获取值?拥有所有相同的图标。
But the FILE and FOLDER are pointing to the default LookAndFeel.
那么尝试为您要处理的系统设置 LAF。类似于:
UIManager.setLookAndFeel( laf1 );
Icon laf1Icon = UIManager.getIcon("FileView.fileIcon");
Icon laf1Folder = UIManager.getIcon("FileView.directoryIcon");
UIManager.setLookAndFeel( laf2 );
Icon laf2Icon = UIManager.getIcon("FileView.fileIcon");
Icon laf2Folder = UIManager.getIcon("FileView.directoryIcon");
//...
UIManager.setLookAndFeel( backToTheDefault );
您可以通过查看 UIManager Defaults 查看此方法的结果。随着 LAF 的变化,图标也会发生变化。当然,这仅适用于您系统上可用的 LAF,并非所有可能的远程文件系统。