怎样使用JTable Class .......... 自定义TABLE MODAL,列的类定义为boolean类型 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的以下函数定义对吗? public Class getColumnClass(int column) { switch(column) { case 0: return boolean.class; case 1: return String.class; case 2: return String.class; case 3: return String.class; default: return Object.class; } }如何追加一条纪录? 定义得非常正确追加纪录你在TABLE MODAL里追加就是了,然后重画一下或者用那个叫fire什么的函数啊 不行。我追加后,第一列的如果追加bool型,则出错。请告诉我如何追加? 你自己写一个CellRenderer和CellEditor就行了 import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import javax.swing.table.*;public class JTest extends JFrame{ protected JTable m_table; protected TableData m_data; public JTest() { super("Expense Report"); setSize(200, 200); m_data = new TableData(); m_table = new JTable(); m_table.setAutoCreateColumnsFromModel(false); m_table.setModel(m_data); m_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); TableCellRenderer renderer = new CheckCellRenderer(); TableCellEditor editor = new DefaultCellEditor(new JCheckBox()); TableColumn column = new TableColumn(0,30,renderer, editor); m_table.addColumn(column); renderer = new DefaultTableCellRenderer(); editor = new DefaultCellEditor(new JTextField()); column = new TableColumn(1,180,renderer, editor); m_table.addColumn(column); JTableHeader header = m_table.getTableHeader(); header.setUpdateTableInRealTime(false); JScrollPane ps = new JScrollPane(); ps.setSize(220, 220); ps.getViewport().add(m_table); getContentPane().add(ps, BorderLayout.CENTER); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(wndCloser); setVisible(true); } public static void main(String argv[]) { new JTest(); }}class CheckCellRenderer extends JCheckBox implements TableCellRenderer{ protected static Border m_noFocusBorder; public CheckCellRenderer() { super(); m_noFocusBorder = new EmptyBorder(1, 2, 1, 2); setOpaque(true); setBorder(m_noFocusBorder); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof Boolean) { Boolean b = (Boolean)value; setSelected(b.booleanValue()); } setBackground(isSelected && !hasFocus ? table.getSelectionBackground() : table.getBackground()); setForeground(isSelected && !hasFocus ? table.getSelectionForeground() : table.getForeground()); setFont(table.getFont()); setBorder(hasFocus ? UIManager.getBorder( "Table.focusCellHighlightBorder") : m_noFocusBorder); return this; }}class TableData extends AbstractTableModel{ protected Vector m_vector; public TableData() { m_vector = new Vector(); setDefaultData(); } public void setDefaultData() { m_vector.removeAllElements(); for(int i=0;i<5;i++) { Vector v=new Vector(); v.add(new Boolean(false)); v.add(String.valueOf(i)); m_vector.addElement(v); } } public int getRowCount() { return m_vector==null ? 0 : m_vector.size(); } public int getColumnCount() { return 2; } public String getColumnName(int column) { if(column==0) return "选择"; else return "列"+(column-1); } public boolean isCellEditable(int nRow, int nCol) { return true; } public Object getValueAt(int nRow, int nCol) { Vector record=(Vector)m_vector.elementAt(nRow); return record.elementAt(nCol); } public void setValueAt(Object value, int nRow, int nCol) { Vector record=(Vector)m_vector.elementAt(nRow); record.setElementAt(value,nCol); } public void insert(int row) { if (row < 0) row = 0; if (row > m_vector.size()) row = m_vector.size(); Vector v=new Vector(); v.addElement(new Boolean(false)); v.addElement(new String("")); m_vector.insertElementAt(v,row); } public boolean delete(int row) { if (row < 0 || row >= m_vector.size()) return false; m_vector.remove(row); return true; }} to xiaoxi777(小溪)非常感谢,请你用语言描述一下 TableCellRenderer TableCellEditor TableColumn谢谢 你自己看看http://manning.spindoczine.com/sbe/files/uts2/Chapter18html/Chapter18.htm java参数传递和对象问题 实在检查不出是哪里错了,请高人帮帮忙啊! 关于Graphics 写一段程序,实现两条记录的判断 tomcat5.0.28的bug swing应该如何搭建? 找人帮忙做作业!!!里面有我的联系方式 可付费 java的时间问题 waiting on line 命令行中运行.class文件提示找不到或者无法加载主类 菜鸟问题:谁能给我解释一下CLASSPATH的作用及设置. 难道高手区里的人就是高手?
switch(column) {
case 0:
return boolean.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return String.class;
default:
return Object.class;
}
}如何追加一条纪录?
追加纪录你在TABLE MODAL里追加就是了,然后重画一下或者用那个叫fire什么的函数啊
我追加后,第一列的如果追加bool型,则出错。请告诉我如何追加?
import java.awt.event.*;
import java.util.*;
import java.io.*;import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;public class JTest extends JFrame
{
protected JTable m_table;
protected TableData m_data; public JTest() {
super("Expense Report");
setSize(200, 200); m_data = new TableData(); m_table = new JTable();
m_table.setAutoCreateColumnsFromModel(false);
m_table.setModel(m_data);
m_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); TableCellRenderer renderer = new CheckCellRenderer();
TableCellEditor editor = new DefaultCellEditor(new JCheckBox());
TableColumn column = new TableColumn(0,30,renderer, editor);
m_table.addColumn(column); renderer = new DefaultTableCellRenderer();
editor = new DefaultCellEditor(new JTextField());
column = new TableColumn(1,180,renderer, editor);
m_table.addColumn(column); JTableHeader header = m_table.getTableHeader();
header.setUpdateTableInRealTime(false); JScrollPane ps = new JScrollPane();
ps.setSize(220, 220);
ps.getViewport().add(m_table);
getContentPane().add(ps, BorderLayout.CENTER); WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wndCloser); setVisible(true);
}
public static void main(String argv[]) {
new JTest();
}
}class CheckCellRenderer extends JCheckBox implements TableCellRenderer
{
protected static Border m_noFocusBorder; public CheckCellRenderer() {
super();
m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
setOpaque(true);
setBorder(m_noFocusBorder);
} public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column)
{
if (value instanceof Boolean) {
Boolean b = (Boolean)value;
setSelected(b.booleanValue());
} setBackground(isSelected && !hasFocus ?
table.getSelectionBackground() : table.getBackground());
setForeground(isSelected && !hasFocus ?
table.getSelectionForeground() : table.getForeground()); setFont(table.getFont());
setBorder(hasFocus ? UIManager.getBorder(
"Table.focusCellHighlightBorder") : m_noFocusBorder); return this;
}
}class TableData extends AbstractTableModel
{
protected Vector m_vector; public TableData() {
m_vector = new Vector();
setDefaultData();
} public void setDefaultData() {
m_vector.removeAllElements();
for(int i=0;i<5;i++)
{
Vector v=new Vector();
v.add(new Boolean(false));
v.add(String.valueOf(i));
m_vector.addElement(v);
}
} public int getRowCount() {
return m_vector==null ? 0 : m_vector.size();
} public int getColumnCount() {
return 2;
} public String getColumnName(int column) {
if(column==0)
return "选择";
else
return "列"+(column-1);
} public boolean isCellEditable(int nRow, int nCol) {
return true;
} public Object getValueAt(int nRow, int nCol) {
Vector record=(Vector)m_vector.elementAt(nRow);
return record.elementAt(nCol);
} public void setValueAt(Object value, int nRow, int nCol) {
Vector record=(Vector)m_vector.elementAt(nRow);
record.setElementAt(value,nCol);
} public void insert(int row) {
if (row < 0)
row = 0;
if (row > m_vector.size())
row = m_vector.size();
Vector v=new Vector();
v.addElement(new Boolean(false));
v.addElement(new String(""));
m_vector.insertElementAt(v,row);
} public boolean delete(int row) {
if (row < 0 || row >= m_vector.size())
return false;
m_vector.remove(row);
return true;
}
}
TableCellEditor
TableColumn谢谢
http://manning.spindoczine.com/sbe/files/uts2/Chapter18html/Chapter18.htm