JTable的单元格渲染器

编程入门 行业动态 更新时间:2024-10-28 02:24:45
本文介绍了JTable的单元格渲染器 - 彩色行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我一直在四处寻找解决方案,我不能在不问自己问题的情况下从不同地方做头或尾,如何让我的桌子做彩色行。

I've been looking around for a solution to this and I can't make head nor tail from various places of how to get my table to do coloured rows without asking my own question.

从我看过的每个地方我都会收集细胞渲染器,但问题是我不知道如何将它应用到我自己的情况。

From every place I've looked I gather I need to use a cell renderer but the problem is I don't know how to apply it to my own situation.

所以我有一个简单的JTable 3列,我只想让每一行以绿色,黄色或红色突出显示,具体取决于单独变量的值(表中未显示)。

So I have a simple JTable with 3 columns and I simply want each row to be highlighted in either green, yellow or red depending on the value of a separate variable (not displayed in the table).

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

It seems like it should be really simple but I can't get how to do it. If it helps my table is defined like:

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);

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

The rows in the table change depending of the selection of a combo box.

提前致谢。

推荐答案

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; } }

更多推荐

JTable的单元格渲染器

本文发布于:2023-11-23 02:03:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1619692.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元格   渲染器   JTable

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!