Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTree:无论L&;如何修改外观;F_Java_Swing_Jtree_Look And Feel - Fatal编程技术网

Java JTree:无论L&;如何修改外观;F

Java JTree:无论L&;如何修改外观;F,java,swing,jtree,look-and-feel,Java,Swing,Jtree,Look And Feel,我有一个JTree,我正试图修改它,以便任何选定节点的实际选择区域将从JTree的最左侧延伸到JTree的最右侧 web上的大多数示例都谈到扩展BasicTreeUI。从这里,您只需修改确定选择区域的方法即可。然而,这将要求JTree——不管它在哪个平台上运行——将使用该实现。我将无法真正利用针对特定平台的各种UI实现,因为我总是使用BasicTreeUI(而不是Metal、Windows或Aquia实现) 理想情况下,我希望能够采用目前安装在JTree上的BasicTreeUI的任何实现,并将

我有一个JTree,我正试图修改它,以便任何选定节点的实际选择区域将从JTree的最左侧延伸到JTree的最右侧

web上的大多数示例都谈到扩展BasicTreeUI。从这里,您只需修改确定选择区域的方法即可。然而,这将要求JTree——不管它在哪个平台上运行——将使用该实现。我将无法真正利用针对特定平台的各种UI实现,因为我总是使用BasicTreeUI(而不是Metal、Windows或Aquia实现)


理想情况下,我希望能够采用目前安装在JTree上的BasicTreeUI的任何实现,并将其封装在我的自定义包装器中,该包装器扩展了BasicTreeUI。从那里,我将覆盖所有方法并委托给包装的UI,并在需要重新计算节点选择区域的地方实现一些方法。但是,BasicTreeUI上的大多数方法都受到保护, 所以我真的能做到


不知道该如何解决这个问题…欢迎提出任何想法

也许您可以覆盖
setUI
并将提供的UI包装到自定义树UI中,如下所示:

@Override
public void setUI(TreeUI ui) {
    super.setUI(new MyCustomTreeUI(ui));
}

另一个要考虑的选项是在全局代码> uimaNaviger-<代码>中提供/设置树UI属性。我相信特定于平台的树UI将向全局

UIManager
请求属性值并相应地配置自己-也许您可以简单地执行类似
UIManager.put(“tree.selectionWidth”,100)

“但是,BasicTreeUI上的大多数方法都受到保护”-如果它们受到保护,那么您可以覆盖它们,您的意思是
私有
?谢谢您的建议。但是,它不会真正起作用,因为MyCustomTreeUI将无法覆盖所提供ui实例的所需方法,因为它们受到保护。具体来说,我希望修改BasicTreeUI#createNodeDimensions()中的任何维度方法,该方法确定节点大小。但您可以重写受保护的方法。如果无法向类所在的包中添加任何内容,您将如何重写受保护的方法?即使自定义类与超级类不在同一包中,您也可以重写受保护的方法。也许您将
受保护的
与包私有(即无访问修饰符)混淆了。