尽管有Nimbus的弱点,我一直在努力将Java应用程序从WindowsLookAndFeel过渡到Nimbus,主要是成功的.我的用户总体上喜欢Nimbus LaF,但不喜欢一些细节,其中一些我通过咨询本网站上的问题而改变了.示例:我从Windows LaF(他们喜欢)复制了LeafIcon,ClosedIcon和OpenIcon,并在Nimbus版本中使用它们,以获得LaF的良好组合.
坚持最后一个(?)问题.
我有一个带有子类DefaultCellRenderer的JTree来创建适当的节点显示.这在WindowsLookAndFeel下工作正常.
问题:在WindowsLaF下,当选择节点时,节点的文本会突出显示,并且效果在视觉上易于理解.在Nimbus下选择一个节点时,突出显示是用一条(相当暗的)颜色条来完成的,它运行树窗的宽度(不仅仅是文本的宽度),效果令人不安.
所以:我只想在Nimbus LaF中使用WindowsLaF处理JTree节点突出显示(即彩色背景只有文本的宽度,最好是我可以选择的更好的颜色).我怀疑这意味着我需要将正确的排序画家分配给"Tree:TreeCell [Focused + Selected] .backgroundPainter",但我不知道如何编写它.
建议最受欢迎.
编辑
使用Java 7查看奇怪的选定节点突出显示!

public class TreeBorder {
public static void main( String[] args ) {
try{
for( UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels() ) {
if( "Nimbus".equals( info.getName() ) ) {
UIManager.setLookAndFeel( info.getClassName() );
break;
}
}
} catch( Exception e ) {
e.printStackTrace();
}
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
JFrame f = new JFrame();
f.setLocationRelativeTo( null );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.getContentPane().add( getJTree() );
f.pack(); …Run Code Online (Sandbox Code Playgroud) 最近提出的一个问题是:如何在详细信息视图中启动JFileChooser? 和答案做这件事提供了一个很好的技术.
我想在此提出的愿望一层:因为我现在知道如何打开JFileChooser中的详细信息视图,我也把它用日期排列的文件打开?我知道用户当然可以点击标题,但有没有办法在代码中实现这一点?