java jtable 设置表头字体颜色_java – Swing – 是否可以在JTable单元格中设置“特定”文本的字体颜色?...

通过创建自定义的`MyCellRenderer`类,实现了在Java Swing的JTable中,当单元格内容包含特定格式(如'[...]')时,改变这部分文本的字体颜色。示例代码展示了如何在表格中根据文本内容动态设置颜色。
摘要由CSDN通过智能技术生成

您必须使用与HTML结合的Cell渲染器.

这是一个小的演示示例:

import java.awt.BorderLayout;

import java.awt.Component;

import java.util.Vector;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

public class TestTable2 {

class MyCellRenderer extends DefaultTableCellRenderer {

@Override

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

Component tableCellRendererComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

if (value instanceof String) {

String string = (String) value;

if (string.indexOf('[') > -1) {

setText(getHTML(string));

}

}

return tableCellRendererComponent;

}

private String getHTML(String string) {

StringBuilder sb = new StringBuilder();

sb.append("");

int index = 0;

while (index < string.length()) {

int next = string.indexOf('[', index);

if (next > -1) {

int end = string.indexOf(']', next);

if (end > -1) {

next++;

sb.append(string.substring(index, next));

sb.append("");

sb.append(string.substring(next, end));

sb.append("");

index = end;

} else {

break;

}

} else {

break;

}

}

sb.append(string.substring(index, string.length()));

sb.append("");

return sb.toString();

}

}

protected void initUI() {

DefaultTableModel model = new DefaultTableModel();

for (int i = 0; i < 2; i++) {

model.addColumn("Col-" + (i + 1));

}

for (int i = 0; i < 200; i++) {

Vector row = new Vector();

for (int j = 0; j < 5; j++) {

row.add("423545(50),[7568787(50)],53654656,2021947(50),[021947],2021947(50),[8021947(50)]");

}

model.addRow(row);

}

JTable table = new JTable(model);

table.setDefaultRenderer(Object.class, new MyCellRenderer());

JFrame frame = new JFrame(TestTable2.class.getSimpleName());

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JScrollPane scrollpane = new JScrollPane(table);

frame.add(scrollpane, BorderLayout.CENTER);

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException,

UnsupportedLookAndFeelException {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

new TestTable2().initUI();

}

});

}

}

结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值