java swing table列渲染_java开发渲染jtable 根据某个单元格中的值,渲染单元格所在行...

该博客介绍了如何使用Java Swing创建一个JTable,并实现根据表格最后一列的值来动态渲染行的背景颜色。通过自定义TableCellRenderer,当单元格值为'1'时,所在行将被设置为红色。
摘要由CSDN通过智能技术生成

展开全部

import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import java.awt.FlowLayout;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.TableCellRenderer;

import javax.swing.table.TableModel;

import javax.swing.table.TableRowSorter;

public class TableFrame extends JFrame

{

private static final long serialVersionUID = 1L;

private static final int COLNUM = 8;

private static final String[] NAMES = new String[COLNUM];

private static final String[][] DATA = new String[2 * COLNUM][COLNUM];

private static JTable tableView = null;

public TableFrame ( String title )

{

62616964757a686964616fe4b893e5b19e31333335316464randomTester ();

this.setTitle (title);

}

private void randomTester ()

{

for ( int i = 0; i 

{

NAMES[i] = "COL" + ( i + 1 );

}

for ( int i = 0; i 

{

for ( int j = 0; j 

{

DATA[i][j] = (int) ( Math.random () * 5 + 1 ) + "";

}

}

}

private static void createTable ( TableFrame tc )

{

AbstractTableModel dataModel = new AbstractTableModel ()

{

private static final long serialVersionUID = 1L;

public int getColumnCount ()

{

return NAMES.length;

}

public int getRowCount ()

{

return DATA.length;

}

public Object getValueAt ( int row, int col )

{

return DATA[row][col];

}

public String getColumnName ( int column )

{

return NAMES[column];

}

};

tableView = new JTable (dataModel);

tableView.setDefaultRenderer (Object.class, new TableCellRenderer ()

{

@Override

public Component getTableCellRendererComponent ( JTable table, Object value, boolean isSelected,

boolean hasFocus, int row, int column )

{

Component render =

new DefaultTableCellRenderer ().getTableCellRendererComponent (table, value, isSelected,

hasFocus, row, column);

if ("1".equals (table.getValueAt (row, NAMES.length - 1)))

{

render.setBackground (Color.RED);

}

return render;

}

});

tableView.setRowSorter (new TableRowSorter (dataModel));

JScrollPane scrollpane = new JScrollPane (tableView);

scrollpane.setPreferredSize (new Dimension (500, 400));

tc.add (scrollpane);

}

private static void initFrame ( TableFrame tc )

{

tc.setLayout (new FlowLayout (FlowLayout.LEFT));

tc.setSize (500, 400);

tc.pack ();

tc.setResizable (false);

tc.setLocationRelativeTo (null);

tc.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

tc.setVisible (true);

}

public static void main ( String[] args )

{

TableFrame tc = new TableFrame ("TableFrame");

createTable (tc);

initFrame (tc);

}

}

b2d72664c82790d44876e79ac263754b.png

62662a7ea582764eb8af9c7163a65c4e.png

819c039733b47cf88d119bc360de2cad.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值