- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试学习 JTable 渲染器,并且几乎已经确定了我正在寻找的行为,除了最后一部分。我想删除 JTable 默认为 boolean 值呈现的复选框并呈现一个简单的字符串,但我无法解决这里的问题。
由于我对渲染器的更改非常小(只有基本的字符串操作,加上 boolean 值的前景色),因此我想扩展 DefaultTableCellRenderer
而不是实现 TableCellRenderer
和从头开始。 我还对所有单元格类型使用相同的渲染器,因为为每个简单操作创建一个新类似乎很愚蠢。这是我的相关代码:
public class MyTableRenderer extends DefaultTableCellRenderer {
public MyTableRenderer() {
super();
}
@Override
public void setValue(Object value) {
if(value instanceof Boolean) {
boolean v = (boolean) value;
setForeground( v ? Color.GREEN : Color.RED );
setText( v ? "Alive" : "Dead" );
}
/* else if(value instanceof //Other types, and so on and so forth */
}
}
我将渲染器应用到表格,如下所示:
JTable myTable = new JTable(myTableModel);
myTable.setDefaultRenderer(Object.class, new MyTableRenderer());
我已确保我的表模型正确响应 getColumnClass()
,并且我的渲染器的行为与所有其他类型的 value
的行为相同,只有 boolean 值起作用向上。无论我 setText
在 boolean 值的情况下设置什么,我的文本都会被默认复选框替换。 我知道 boolean 值默认使用单独的渲染器,但不应调用 setDefaultRenderer
on Object.class
覆盖默认值 Boolean.class
?
最佳答案
myTable.setDefaultRenderer(Object.class, new MyTableRenderer());
您正在创建 boolean 渲染器,而不是对象渲染器。所以你应该使用:
myTable.setDefaultRenderer(Boolean.class, new MyTableRenderer());
but shouldn't calling setDefaultRenderer on Object.class override the default for Boolean.class?
没有。如果没有为特定类指定渲染器,则对象渲染器将用作默认渲染器。由于有一个默认的 boolean 渲染器,您将使用该渲染器,除非您用自己的渲染器替换该渲染器。
I also have been using the same renderer for all cell types since it seemed silly to create a new class for each one of my simple operations
在不确切知道您在做什么的情况下,一般来说,您应该创建自定义渲染器。每当您在代码中看到 if/else 逻辑时,您就知道存在设计问题。使用 JTable 提供的功能并为每类数据创建渲染器,而不是使用 if/else。
如果您认为自己有很多通用渲染逻辑,那么您可以使用通用渲染代码创建一个渲染器。然后,您创建多个渲染器,为您想要支持的每种数据类扩展基本渲染器。
I'm trying to use this same renderer for all cell types,
这就是我上面所说的问题。
如果您确实有充分的理由这样做,那么您还需要为您想要共享同一渲染器的所有数据类添加我上面建议的代码行。至少您需要为具有默认渲染器的类执行此操作。
关于java - 将 DefaultTableCellRenderer 中的 boolean 值的复选框替换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552611/
我想知道除了 JCheckbox 和 JComboBox 之外,DefaultTableCellRenderer 支持哪些组件... 最佳答案 DefaultTableCellRenderer 本身不
我正在尝试更改 JTable 第三行单元格的颜色(如果它们有值)。我读到,执行此操作的一个好方法是使用表格单元格渲染器。然而,它似乎什么也没做!这是我的渲染器代码: public class Rend
我几周来一直在尝试通过使用 RGBtoHSV 更改背景颜色来使 JTable 中的 Cell 闪烁,我是能够使用我在网上搜索到的方法来刷新单行,但当涉及到多行时,它似乎不起作用。 我尝试创建自定义渲染
我在编辑 DefaultTableCellRenderer 时遇到问题。 我只想右对齐表格中的第二列。但是,右下方的代码对齐所有列,而不仅仅是第二列! 谁能看出我哪里出错了? for (int i=0
我正在尝试通过指定我自己的表格单元格渲染器向特定的 JTable 列添加一个图标,如下所示 (based on parts of this tutorial): public class MyTabl
我一直在尝试学习 JTable 渲染器,并且几乎已经确定了我正在寻找的行为,除了最后一部分。我想删除 JTable 默认为 boolean 值呈现的复选框并呈现一个简单的字符串,但我无法解决这里的问题
我正在尝试从 ArrayList 填充我的表格,并使用自定义的 DefaultTableCellRenderer 来渲染它: public class CustomRender extends Def
我正在尝试使用 DefaultTableCellRenderer 来格式化 JTable 中的列。例如:如果用户输入: 20140914 格式如下: 2014-09-14 我的代码如下: //
我有以下 TableCellRenderer(不是 DefaultTableCellRenderer),它允许我在 JTable 的单元格中跳过行: import java.awt.Color; im
我正在使用 netbeans 及其图形用户界面构建器来创建桌面应用程序。为了对我的 jTables 中的特殊单元格进行着色,我已经根据示例代码实现了自定义 DefaultTableCellRender
我更新到 SwingX-1.6.2 但发现了 1.6 中没有出现的问题。 JXTable 单元格的颜色看起来很奇怪。我使用带有备用条纹 (HighlighterFactory.createAltern
我有一个无法摆脱的问题。 如你所知,我对使用 JTables 还很陌生,所以答案可能很简单,但我找不到解决方案:/ 所以,我有一个使用 AbstractTableModel 的 JTable,它覆盖了
我是一名优秀的程序员,十分优秀!