【发布时间】:2013-04-27 20:56:35
【问题描述】:
我用枚举值中的节点填充我的 JTree。但节点以全部大写文本显示。这是不可取的,因为我希望节点以小写形式显示。
示例:
public enum DaysOfTheWeek {
MONDAY("Monday", "MON", "First day of the work week."),
//etc ...
private final String fullName;
private final String abbrvName;
private final String description;
DaysOfTheWeek(String fullName, String abbrvName, String description) {
this.fullName = fullName;
//etc ...
}
public String getFullName() {
return fullName;
}
}
我试过了:
List<DefaultMutableTreeNode> daysOfWeekNodes = new ArrayList<>();
for(DaysOfTheWeek dotw : DaysOfTheWeek.values()) {
daysOfWeekNodes.add(new DefaultMutableTreeNode(dotw.getFullName()));
daysOfWeekNodes.get(dotw.ordinal()).setUserObject(dotw);
}
节点显示为:MONDAY 但我希望它显示为:星期一
基于文本的图形示例:
Days
|
---Monday
|
---Tuesday
不是
Days
|
---MONDAY
|
---TUESDAY
如何让我的树节点与枚举值关联,但它在树上的文本使用全名字符串?或者换句话说,如何设置树节点用户对象但名称不同?
*注意 - 一个简单的解决方法是违反约定并命名我希望它们在树中显示的值,而不是全部大写。
【问题讨论】:
-
这段代码看起来不错。问题可能在于显示点,而不是树创建点。可以贴一下显示代码吗?
-
实际上没有任何显示代码。我只是在创建树后将它添加到我的面板中。
标签: java swing enums jtree treecellrenderer