- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用下面这段代码:
class CountryTreeCellRenderer implements TreeCellRenderer {
private JLabel label;
CountryTreeCellRenderer() {
label = new JLabel();
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
Object o = ((DefaultMutableTreeNode) value).getUserObject();
if (o instanceof Country) {
Country country = (Country) o;
label.setIcon(new ImageIcon(country.getFlagIcon()));
label.setText(country.getName());
} else {
label.setIcon(null);
label.setText("" + value);
}
return label;
}
}
由于我正在传递/返回标签,因此在选择 JTree
中的任何组件时,不会出现选择颜色。我尝试使用:
JComponent comp = (JComponent) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
comp.setOpaque(true);
if(selected)
comp.setBackground(Color.RED);
但是如果我返回 comp
,那么树的输出就不会按预期出现。
如何解决?
我没有为此实现任何编辑器。
最佳答案
请看source code of the DefaultTreeCellRenderer
,它也扩展了 JLabel
并且完全能够设置背景颜色。我复制粘贴了以下相关行:
if (selected)
{
super.setBackground(getBackgroundSelectionColor());
setForeground(getTextSelectionColor());
if (hasFocus)
setBorderSelectionColor(UIManager.getLookAndFeelDefaults().
getColor("Tree.selectionBorderColor"));
else
setBorderSelectionColor(null);
}
else
{
super.setBackground(getBackgroundNonSelectionColor());
setForeground(getTextNonSelectionColor());
setBorderSelectionColor(null);
}
关于java - JTree TreeCellRenderer 在显示选择颜色时引发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051463/
我得到了一个带有自定义 TreeCellRenderer 的 JTree。 该渲染器是一个包含复选框和标签的面板。 虽然每个节点的标签文本都是固定的(在 DefaultMutableTreeNode
我一直在研究 JTree 和 TreeCellRenderer。一般来说,应用程序(具有一棵 JTree)似乎只有一个 TreeCellRenderer 实例。应用程序多次调用 TreeCellRen
我为 JTree 文件编写了一个树渲染器,它可以在第一次创建树时设置背景颜色,但它不会突出显示选择。 private class CustomTreeCellRenderer extends Defa
简而言之,我希望渲染树以使第一层为粗体。 public class TreeRenderer1 extends DefaultTreeCellRenderer { @Override public C
我有一个简单的 TreeCellRenderer,它从节点中提取 JButton,并将其输出到 JTree。 public class ButtonCellRenderer extends JButt
我正在使用下面这段代码: class CountryTreeCellRenderer implements TreeCellRenderer { private JLabel lab
如何让我的树单元填充我的 JTree 的宽度: JTree tree = new JTree(); tree.setCellRenderer(new TreeCellRenderer() {
我编写了自定义 TreeCellRenderer 以更改组件外观。一切正常,除了 setBackground 没有效果。由于前景颜色始终正确更改,因此代码肯定会执行。由于选中的项目呈现为蓝色,取消选中
有人知道如何修改 javax.swing.TreeCellRenderer 才能描边单元格中的文本吗? 最佳答案 如果您想在某些列中描边文本,您应该使用渲染器。如果所有单元格都需要这种字体,只需修改表
我有一个派生自具有自定义 TreeCellRenderer 的 JTree 的类。我已经在该树中实现了拖放操作,因此用户可以重新排列树节点。 放置模式为 DropMode.ON_OR_INSERT,因
我是一名优秀的程序员,十分优秀!