目录
import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumnModel; public class IconCurrencyTable { public static void main(String[] args) { JFrame f = new JFrame("Icon Currency Table"); JTable tbl = new JTable(new CurrencyTableModel()); TableColumnModel tcm = tbl.getColumnModel(); tcm.getColumn(0).setPreferredWidth(150); tcm.getColumn(0).setMinWidth(250); TextWithIconCellRenderer renderer = new TextWithIconCellRenderer(); tcm.getColumn(0).setCellRenderer(renderer); tbl.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); tbl.setPreferredScrollableViewportSize(tbl.getPreferredSize()); JScrollPane sp = new JScrollPane(tbl); f.getContentPane().add(sp, "Center"); f.pack(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); f.setVisible(true); } } class CurrencyTableModel extends AbstractTableModel { protected String[] columnNames = { "nick name", "user name", "password"}; protected static final int NICK = 1; protected static final int USERNAME = 2; protected static final int PASSWORD = 3; protected static final Class thisClass = CurrencyTableModel.class; public CurrencyTableModel() { } // Implementation of TableModel interface public int getRowCount() { return data.length; } public int getColumnCount() { return PASSWORD; } public Object getValueAt(int row, int column) { return data[row][column]; } public Class getColumnClass(int column) { return (data[0][column]).getClass(); } public String getColumnName(int column) { return columnNames[column]; } protected Object[][] data = new Object[][] { { new DataWithIcon("xiao ming", new ImageIcon(thisClass .getResource("user_16.png"))),"1111111","123456"}, { new DataWithIcon("xiao dong", new ImageIcon(thisClass .getResource("user_16.png"))),"2222222","234567"}, { new DataWithIcon("xiao hai", new ImageIcon(thisClass .getResource("user_16.png"))),"3333333","345678"}, { new DataWithIcon("xiao hui", new ImageIcon(thisClass .getResource("user_16.png"))),"4444444","456789"}, { new DataWithIcon("xiao zhi", new ImageIcon(thisClass .getResource("user_16.png"))),"5555555","567890"}, { new DataWithIcon("xiao xiao", new ImageIcon(thisClass .getResource("user_16.png"))),"6666666","678901"}, { new DataWithIcon("xiao li", new ImageIcon(thisClass .getResource("user_16.png"))),"7777777","789012"} }; } class DataWithIcon { public DataWithIcon(Object data, Icon icon) { this.data = data; this.icon = icon; } public Icon getIcon() { return icon; } public Object getData() { return data; } public String toString() { return data.toString(); } protected Icon icon; protected Object data; } class TextWithIconCellRenderer extends DefaultTableCellRenderer { protected void setValue(Object value) { if (value instanceof DataWithIcon) { if (value != null) { DataWithIcon d = (DataWithIcon)value; Object dataValue = d.getData(); setText(dataValue == null ? "" : dataValue.toString()); setIcon(d.getIcon()); setHorizontalTextPosition(SwingConstants.RIGHT); setVerticalTextPosition(SwingConstants.CENTER); setHorizontalAlignment(SwingConstants.LEFT); setVerticalAlignment(SwingConstants.CENTER); } else { setText(""); setIcon(null); } } else { super.setValue(value); } } }
效果图: