- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个根据整数值改变颜色的单元渲染器。然而,细胞的颜色仅在聚焦时才会改变。见下图。
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
switch (column) {
case 1:this.setFont(this.getFont().deriveFont(Font.BOLD)); break;
case 3:this.setFont(this.getFont().deriveFont(Font.BOLD)); break;
}
if (column == 4 && (Integer)value > 0) {
setForeground(Color.green);
} else {
setForeground(Color.red);
}
return this;
}
最佳答案
我猜您的表没有触发正确的更新事件,因此没有重绘单元格。
合并了无法重现问题的所有给定代码的 MRE:
import java.awt.*;
import javax.swing.*;
class Code extends javax.swing.table.DefaultTableCellRenderer {
public static void main(String[] args) throws Throwable {
java.awt.EventQueue.invokeLater(Code::go);
}
private static void go() {
JTable table = new JTable(
new Object[][] { { 0, 1, 2, 3, 4 }, { 1, 2, 3, 4, 5 } },
new Object[] { "0", "1", "2", "3", "3" }
);
table.setDefaultRenderer(Object.class, new Code());
JFrame frame = new JFrame("Table");
frame.add(table);
frame.pack();
frame.setVisible(true);
new Timer(1000, event -> {
table.setValueAt(
-(Integer)table.getValueAt(0, 4),
0, 4
);
}).start();
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
switch (column) {
case 1:this.setFont(this.getFont().deriveFont(Font.BOLD)); break;
case 3:this.setFont(this.getFont().deriveFont(Font.BOLD)); break;
}
if (column == 4 && (Integer)value > 0) {
setForeground(Color.green);
} else {
setForeground(Color.red);
}
return this;
}
}
关于java - JTable CellRenderer 仅在聚焦时更改前景色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60873086/
如何使 JTable 中的文本变为粗体,我尝试了以下方法,它确实适用于颜色,但为了使文本变为粗体,我在某处出错了 class ColourRender extends DefaultTable
我创建了自己的 CellRenderer,它在 JList 项中包含一些字符串和一个 JProgressBar ...但是 JProgressBar 和整个 JList 项将绘制一次,我正在寻找一种重
我正在尝试实现一个根据整数值改变颜色的单元渲染器。然而,细胞的颜色仅在聚焦时才会改变。见下图。 @Override public Component getTableCellRendererCompo
我已经尝试了一段时间并在互联网上寻找解决方案,但我失败了。我想做的是动态更改 Jtable 的行背景。我创建了 arrayList,它保留所选行的数量(每次用户按 alt+单击单元格时添加它们)并在我
这个问题已经有答案了: Coloring particular rows according to the first column values in JTable? (1 个回答) 已关闭 9 年
我有一个JTable,每次选择一个单元格时,我都想打印它的行和列索引。由于这个原因,我使用 getSelectedRow() 和 getSelectedColumn() 方法。运行下面的代码: 测试时
我有一个 gtk.TreeViewColumn,其中包含 14 个 gtk.CellRendererPixbuf 属性。其中大多数大部分时间都是空的(关联的 TreeStore 值为 None)。 这
简单来说:为什么下面的小例子在树形控件的第三项上没有显示浅灰色背景? 代码创建了一个 JTree,用三个字符串填充它(直接传递给构造函数)并重写 getCellRenderer() 方法以返回自定义
我使用 cellRenderer 来更改单元格(列)背景颜色,但它也会将单元格值格式更改为图像上的左列,我会将默认格式保留为图像上的右列,这里是我的简单代码: DefaultTableCellRend
在我的 PyGTK 应用程序中,我目前使用“可编辑”来使单元格可编辑。但是由于我的单元格内容有时真的非常大,所以我想在用户双击单元格时要求用户在新窗口中进行更改。但我无法找到如何 Hook 双击特定的
我用组合框制作了一个用户界面。我正在使用glade,所以我在运行时执行以下操作 combo_box.set_model(liststore) cell = gtk.CellRendererText()
我有一个表格,我的列在其中动态扩展。最初我将表模型设置为有 5 列,因为基本信息有 5 列。在 5 列中,第 2 列和第 3 列是按钮(实际上它们是按钮形式的超链接),这意味着我已将第 2 列和第 3
我正在使用 Itext7 创建一个包含表格的 pdf。 表格占多页。 我还重写了单元格渲染器以将表单域添加到某些单元格。 我注意到当表格转到新页面时,第一行不会触发 CellRender 类的 dra
我有一个内联 cellRenderer 可以修改单元格值,如下所示: cellRenderer: function (params) { if(params.value) { return
我创建了扩展 JTable 的 ColumnAutofitTable,引用 http://tips4java.wordpress.com/2008/11/10/table-column-adjuste
所以我一直在尝试使用教程中的示例并对其进行更改,以使其适合我的程序。getColumnValue 方法返回保存应显示信息的对象。这是要走的路还是应该返回要显示的实际字符串。我想不是,因为这样我会将演示
我有一个带有 cellrenderer 的 JTable,我的表是不可编辑的。当我选择一个单元格并复制 (ctrl-c) 值时,它的复制不是单元格中显示的,而是复制存储在模型中的值。如何复制表格中显示
嗨,我已经创建了自己的渲染器。我希望背景应该是蓝色的。我也将背景颜色设置为蓝色。但我不知道我的渲染器的背景颜色似乎总是白色是什么问题。 我已经发布了代码。请帮助我错误的地方,使背景颜色变成白色。 cl
//新手问题 我有一个带有几乎基本单元格渲染器的 JTable(它以不同的方式为线条着色)。我注意到我的单元格渲染器一直在为屏幕上显示的行运行,即使我没有对表格做任何事情。 事情就该这样吗?它不应该对
我正在尝试为 JTable 的特定列获取自定义工具提示。我已经创建了一个 CellRenderer(其中我已经成功地更改了其他特定于单元格的属性): private class CustomCellR
我是一名优秀的程序员,十分优秀!