- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何使 JTable 中的文本变为粗体,我尝试了以下方法,它确实适用于颜色,但为了使文本变为粗体,我在某处出错了
class ColourRender extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable tblData,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Component cellComponent = super.getTableCellRendererComponent(
tblData, value, isSelected, hasFocus, row, column);
if (tblData.getValueAt(row, 3).equals("M")) {
cellComponent.setForeground(forMen);
} else {
cellComponent.setForeground(forWomen);
}
return cellComponent;
}
class boldRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable tblData,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component cellComponent = super.getTableCellRendererComponent(
tblData, value, isSelected, hasFocus, row, column);
if (tblData.getValueAt(row, 1).equals(bib)) {
cellComponent.setFont(cellComponent.getFont().deriveFont(
Font.BOLD));
} else {
cellComponent.setFont(cellComponent.getFont().deriveFont(
Font.PLAIN));
}
return cellComponent;
}
}
}
这个在与表相关的类中
tblData.getColumn("Bib no").setCellRenderer(new CustomRenderer());
tblData.getColumn("M/F").setCellRenderer(new CustomRenderer());
最佳答案
你创建了一个粗体字体但什么都不做:你永远不会在任何地方调用 setFont(...)
。
即,
if (tblData.getValueAt(row, 1).equals(bib)) {
// you must call setFont(...) for a font to change
cellComponent.setFont(cellComponent.getFont().deriveFont(Font.BOLD));
} else {
// don't forget to set the font back if condition not true
cellComponent.setFont(cellComponent.getFont().deriveFont(Font.PLAIN));
}
// changing foreground color:
if (tblData.getValueAt(row, 3).equals("M")) {
cellComponent.setForeGround(MEN_COLOR); // a constant
} else {
cellComponent.setForeGround(myTable.getForeground());
}
对于颜色,在您的 else block 中将前景色设置为 null 以使您的颜色变回默认值。
编辑
例如:
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class CustomRendererExample extends JPanel {
public static final String[] COLUMNS = { "M/F", "Fubar" };
public static final String[] FUBARS = { "Fubar", "Snafu" };
public static final String[] M_F = { "M", "F" };
protected static final Color M_COLOR = Color.red;
private DefaultTableModel dm = new DefaultTableModel(COLUMNS, 5);
private JTable table = new JTable(dm);
public CustomRendererExample() {
add(new JScrollPane(table));
DefaultCellEditor mfEditor = new DefaultCellEditor(new JComboBox<>(M_F));
table.getColumn(COLUMNS[0]).setCellEditor(mfEditor);
table.getColumn(COLUMNS[0]).setCellRenderer(
new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component superRenderer = super.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
if (value != null && value.equals(M_F[0])) {
superRenderer.setForeground(M_COLOR);
} else {
superRenderer.setForeground(null);
}
return superRenderer;
}
});
DefaultCellEditor fubarEditor = new DefaultCellEditor(new JComboBox<>(
FUBARS));
table.getColumn(COLUMNS[1]).setCellEditor(fubarEditor);
table.getColumn(COLUMNS[1]).setCellRenderer(
new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component superRenderer = super.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
if (value != null && value.equals(FUBARS[0])) {
superRenderer.setFont(superRenderer.getFont().deriveFont(Font.BOLD));
} else {
superRenderer.setFont(superRenderer.getFont().deriveFont(Font.PLAIN));
}
return superRenderer;
}
});
}
private static void createAndShowGui() {
CustomRendererExample mainPanel = new CustomRendererExample();
JFrame frame = new JFrame("Custom Renderer Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
关于java - CellRenderer - 使文本变粗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325138/
如何使 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
我是一名优秀的程序员,十分优秀!