展开全部
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);
}
}