import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;public class TableRenderDemo extends JPanel {
private boolean DEBUG = false;
JTable table; public TableRenderDemo() {
MyTableModel myTableModel = new MyTableModel();
table = new JTable(myTableModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
private Object[][] data = {
{"Mary", "Campione",
"Snowboarding", new Integer(5), new Boolean(false)},
{"Alison", "Huml",
"Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath",
"Knitting", new Integer(2), new Boolean(false)},
{"Sharon", "Zakhour",
"Speed reading", new Integer(20), new Boolean(true)},
{"Philip", "Milne",
"Pool", new Integer(10), new Boolean(false)}
}; public final Object[] longValues = {"Sharon", "Campione",
"None of the above",
new Integer(20), Boolean.TRUE};
public int getColumnCount() {
return columnNames.length;
} public int getRowCount() {
return data.length;
} public String getColumnName(int col) {
return columnNames[col];
} public Object getValueAt(int row, int col) {
return data[row][col];
} public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
} public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
} public void setValueAt(Object value, int row, int col) {
data[row][col] = value; }
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("TableRenderDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableRenderDemo newContentPane = new TableRenderDemo();
//newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
} public static void main(String[] args) {
createAndShowGUI();
}
}
执行代码后:很不理解表格中最右侧的复选框是怎样生成的,代码如何实现的,它的值是如何取到的呢???
高手帮忙,请给详细解释一下
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;public class TableRenderDemo extends JPanel {
private boolean DEBUG = false;
JTable table; public TableRenderDemo() {
MyTableModel myTableModel = new MyTableModel();
table = new JTable(myTableModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
private Object[][] data = {
{"Mary", "Campione",
"Snowboarding", new Integer(5), new Boolean(false)},
{"Alison", "Huml",
"Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath",
"Knitting", new Integer(2), new Boolean(false)},
{"Sharon", "Zakhour",
"Speed reading", new Integer(20), new Boolean(true)},
{"Philip", "Milne",
"Pool", new Integer(10), new Boolean(false)}
}; public final Object[] longValues = {"Sharon", "Campione",
"None of the above",
new Integer(20), Boolean.TRUE};
public int getColumnCount() {
return columnNames.length;
} public int getRowCount() {
return data.length;
} public String getColumnName(int col) {
return columnNames[col];
} public Object getValueAt(int row, int col) {
return data[row][col];
} public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
} public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
} public void setValueAt(Object value, int row, int col) {
data[row][col] = value; }
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("TableRenderDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableRenderDemo newContentPane = new TableRenderDemo();
//newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
} public static void main(String[] args) {
createAndShowGUI();
}
}
执行代码后:很不理解表格中最右侧的复选框是怎样生成的,代码如何实现的,它的值是如何取到的呢???
高手帮忙,请给详细解释一下
楼主【lumingvy】截止到2008-07-24 17:01:04的历史汇总数据(不包括此帖):
发帖的总数量:36 发帖的总分数:680 每贴平均分数:18
回帖的总数量:50 得分贴总数量:7 回帖的得分率:14%
结贴的总数量:34 结贴的总分数:640
无满意结贴数:2 无满意结贴分:40
未结的帖子数:2 未结的总分数:40
结贴的百分比:94.44 % 结分的百分比:94.12 %
无满意结贴率:5.88 % 无满意结分率:6.25 %
值得尊敬
{
private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); public BooleanRenderer() {
super();
setHorizontalAlignment(JLabel.CENTER);
setBorderPainted(true);
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
}
else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSelected((value != null && ((Boolean)value).booleanValue())); if (hasFocus) {
setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
} else {
setBorder(noFocusBorder);
} return this;
}
}