gpt4 book ai didi

java - JTable 的单元格渲染器 - 彩色行

转载 作者:行者123 更新时间:2023-11-29 09:55:11 24 4
gpt4 key购买 nike

我一直在四处寻找解决方案,但我无法在不问我自己的问题的情况下从各个地方了解如何让我的 table 做彩色行。

从我看过的每个地方,我收集到我需要使用单元格渲染器,但问题是我不知道如何将它应用到我自己的情况。

所以我有一个包含 3 列的简单 JTable,我只是希望根据单独变量(未显示在表中)的值以绿色、黄色或红色突出显示每一行。

看起来应该很简单,但我不知道怎么做。如果它有助于我的表定义如下:

studentTableModel = new DefaultTableModel(new Object[]{"Name", "StudentNo", "Part"}, 0);
jt_studentTable = new JTable(studentTableModel);
jt_studentTable.getColumnModel().getColumn(2).setPreferredWidth(10);
studentTableModel.addRow(new Object[]{"(empty)", "(empty)", "(empty)"});
JScrollPane jsp_tableScroller = new JScrollPane(jt_studentTable);
jsp_tableScroller.setPreferredSize(new Dimension(200,190));
middleCentrePanel.add(jsp_tableScroller);

表格中的行根据组合框的选择而改变。

提前致谢。

最佳答案

JTable Cell Coloring

import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;


public class RowRendering {

private static Object[] columnName = {"Yes", "No"};
private static Object[][] data = {
{"Y", "N"},
{"N", "Y"},
{"Y", "N"}
};


public static void main(String[] args) {
Runnable r = new Runnable() {

@Override
public void run() {

JFrame frame = new JFrame();
JTable table = new JTable(data, columnName);
table.getColumnModel().getColumn(0).setCellRenderer(new CustomRenderer());
table.getColumnModel().getColumn(1).setCellRenderer(new CustomRenderer());

frame.add(new JScrollPane(table));
frame.setTitle("Rendering in JTable");
frame.pack();
frame.setVisible(true);
}
};

EventQueue.invokeLater(r);
}
}


class CustomRenderer extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 6703872492730589499L;

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

if(row == 0){
cellComponent.setBackground(Color.YELLOW);
} else if ( row == 1){
cellComponent.setBackground(Color.GRAY);
} else {
cellComponent.setBackground(Color.CYAN);
}
return cellComponent;
}
}

关于java - JTable 的单元格渲染器 - 彩色行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com