【问题标题】:JTree Line Style and NimbusJTree 线型和 Nimbus
【发布时间】:2011-06-29 21:36:27
【问题描述】:

我正在使用 Nimbus 的外观和感觉。根据这个link,您应该能够使用您的 JTree 实现 3 种不同的线条样式:

使用以下代码时:

theTree.putClientProperty("JTree.lineStyle", "Horizontal");

我的 JTree 如下所示:

它具有“无”样式而不是“水平”样式。知道为什么会这样吗?它与Nmbus有关吗?设置该属性后我需要调用一些特殊的东西吗?

谢谢

【问题讨论】:

  • @Stack 是的,我是。但是我的 JTree 是自定义的。它不使用 GUI 编辑器。
  • 那我不确定。看看这个post。建议覆盖 setUI 和 updateUI。

标签: java swing jtree nimbus


【解决方案1】:

我不相信 Nimbus 支持 JTree.lineStyle 属性。只有 MetalLookAndFeel 可以。

查看javax.swing.plaf.synth.SynthTreeUI(Nimbus 使用)和MetalTreeUI(Metal 使用)的源代码。

换成 MetalLookAndFeel 看看它是否有效。

【讨论】:

  • 有趣。我确实将其更改为 Metal LaF 并且确实有效。 Nimbus 不支持他们有点失望
  • 我之前曾尝试使用 Nimbus 执行此操作,但找不到 Nimbus 支持它的方式。我同意 dogbane 的回答。
  • @eugener 不,我没有。你能提供任何链接或详细信息吗?
  • 简而言之...您可以通过继承现有的和覆盖的绘制方法来绘制线条或将默认渲染器 JLabel 组件放在面板上并在面板底部添加分隔符来创建自己的树单元格渲染器.这是 Swing 教程中关于树细胞渲染器的链接(向下滚动一点):download.oracle.com/javase/tutorial/uiswing/components/… 如果您需要更多信息,请告诉我。
【解决方案2】:

原来你可以通过这样做来获得一些这种效果

NimbusLookAndFeel laf = new NimbusLookAndFeel();
UIManager.setLookAndFeel(laf);
nimbUID = laf.getDefaults();
nimbUID.put("Tree.drawHorizontalLines", true);
nimbUID.put("Tree.drawVerticalLines", true);

不完美,但很接近。

【讨论】:

    【解决方案3】:

    对于仍然对此感兴趣的人:

    以下 sn-p 对我有用。

    NewNimbusLookAndFeel laf = new NewNimbusLookAndFeel();
    
    UIDefaults defs = laf.getDefaults();
    defs.put("Tree.drawHorizontalLines", true);
    defs.put("Tree.drawVerticalLines", true);
    defs.put("Tree.linesStyle", "dashed");
    
    try {
        UIManager.setLookAndFeel(laf);
    } catch (UnsupportedLookAndFeelException e) {
        //Error handling code
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2011-07-19
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      相关资源
      最近更新 更多