📄 indicatortableexample.java
字号:
/* (swing1.1) */package tame.examples;import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Hashtable;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableModel;import tame.table.IndicatorCellRenderer;/**@author Nobuo Tamemasa@version 1.0 03/03/99*/public class IndicatorTableExample extends JPanel { private static final int MAX = 100; private static final int MIN = 0; public IndicatorTableExample(){ setLayout(new BorderLayout()); DefaultTableModel dm = new DefaultTableModel() { public Class getColumnClass(int col) { switch (col) { case 0: return String.class; case 1: return Integer.class; case 2: return Integer.class; default: return Object.class; } } public boolean isCellEditable(int row, int col) { switch (col) { case 2: return false; default: return true; } } public void setValueAt(Object obj, int row, int col) { if (col != 1) { super.setValueAt(obj, row, col); return; } try { Integer integer = new Integer(obj.toString()); super.setValueAt(checkMinMax(integer), row, col); } catch (NumberFormatException ex) { ex.printStackTrace(); } } }; dm.setDataVector(new Object[][]{ {"not human" ,new Integer(100),new Integer(100)}, {"hard worker" ,new Integer( 76),new Integer( 76)}, {"ordinary guy",new Integer( 51),new Integer( 51)}, {"lazy fellow" ,new Integer( 12),new Integer( 12)}}, new Object[]{"Name","Result","Indicator"}); JTable table = new JTable(dm); IndicatorCellRenderer renderer = new IndicatorCellRenderer(MIN,MAX); renderer.setStringPainted(true); renderer.setBackground(table.getBackground()); // set limit value and fill color Hashtable limitColors = new Hashtable(); limitColors.put(new Integer( 0), Color.green); limitColors.put(new Integer(60), Color.yellow); limitColors.put(new Integer(80), Color.red); renderer.setLimits(limitColors); table.getColumnModel().getColumn(2).setCellRenderer(renderer); table.getModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { if (e.getType() == TableModelEvent.UPDATE) { int col = e.getColumn(); if (col == 1) { int row = e.getFirstRow(); TableModel model = (TableModel)e.getSource(); Integer value = (Integer)model.getValueAt(row, col); model.setValueAt(checkMinMax(value), row, ++col); } } } }); JScrollPane pane = new JScrollPane(table); add(pane, BorderLayout.CENTER); } public static void main(String[] args) { JFrame f= new JFrame("IndicatorTable Example"); f.getContentPane().add(new IndicatorTableExample(), BorderLayout.CENTER); f.setSize(400, 120); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); } private Integer checkMinMax(Integer value) { int intValue = value.intValue(); if (intValue < MIN) { intValue = MIN; } else if (MAX < intValue) { intValue = MAX; } return new Integer(intValue); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -