【发布时间】:2012-02-17 17:26:01
【问题描述】:
一个类中是否可以有多个 ListCellRenderer 的实现?
实际上,我的应用程序中有多个 JList,我需要为每个 JList 提供不同的 ListCellRenderer。
实现ListCellRenderer的组件方法可以有不同的类名吗?
例如:如果我有一个名为“MultiColumnCellRenderer”的类,其中包含一些组件方法的实现,另一个名为“MultiColumnCellRenderer2”的类与其他一些组件方法的实现?
public class MultiColumnCellRenderer extends JPanel implements
ListCellRenderer {
public MultiColumnCellRenderer() {
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// Some implementation of Component Method
super.setEnabled(list.isEnabled());
super.setFont(list.getFont());
return this;
}
}
public class MultiColumnCellRenderer2 extends JPanel implements
ListCellRenderer {
public MultiColumnCellRenderer2() {
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// Some implementation of Component Method
super.setEnabled(list.isEnabled());
super.setFont(list.getFont());
return this;
}
}`
如果我这样做:
list1.setCellRenderer(new MultiColumnCellRenderer());
list2.setCellRenderer(new MultiColumnCellRenderer2());
它不工作......
我正在为 list1 和 list2 寻找不同的呈现方式。
我怎样才能做到这一点
【问题讨论】:
-
什么不起作用?代码不能编译吗?在运行时抛出异常?或者这两个列表的外观看起来并没有什么不同?
-
嗨Russell,感谢您的快速回复.....实际上没有任何异常也没有任何编译错误......但我相信COMPONENT方法下的代码没有被执行......是不是因为不同类下COMPONENT方法的多次实现?
-
我实际上是用调试器检查的,指令指针没有在 COMPONENT 方法的主体内移动......虽然它确实在“MultiColumnCellRenderer”或“MultiColumnCellRenderer2”类的构造函数下执行语句
-
如需尽快获得更好的帮助,请发帖 SSCCE。顺便说一句 1)
MultiColumnCellRenderer和MultiColumnCellRenderer2在getListCellRendererComponent方法中是相同的。 2) 添加@Override符号以检查方法名称/签名是否正确。 -
@kartik mittal 我与 (@Andrew Thompson) 的建议相同,顺便说一句,您的逻辑肯定有其他问题,因为我看不出有任何不工作的原因......
标签: java swing render jlist listcellrenderer