Java 从JTable中添加和删除
我有一个带有自定义模型、自定义CellEditor和CellRenderer的JTable,我想在这个表中删除和添加数据 我该怎么做 我的型号:Java 从JTable中添加和删除,java,swing,jtable,add,Java,Swing,Jtable,Add,我有一个带有自定义模型、自定义CellEditor和CellRenderer的JTable,我想在这个表中删除和添加数据 我该怎么做 我的型号: public class frandtabmodule extends AbstractTableModel { Vector list; public frandtabmodule(Vector frand_list ) { this.list = frand_list; } @Override public C
public class frandtabmodule extends AbstractTableModel {
Vector list;
public frandtabmodule(Vector frand_list ) {
this.list = frand_list;
}
@Override
public Class getColumnClass(int columnIndex) { return Frand.class; }
@Override
public int getColumnCount() { return 1; }
@Override
public String getColumnName(int columnIndex) { return " "; }
@Override
public int getRowCount() { return (list == null) ? 0 : list.size(); }
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
int i =0 ;
System.out.println(" raw"+rowIndex+" clumn"+columnIndex
+"/n -------------------------------------------"+i++);
return (list == null) ? null : list.get(rowIndex);
}
@Override
public boolean isCellEditable(int columnIndex, int rowIndex) { return true; }
@Override
public void fireTableRowsDeleted(int firstRow, int lastRow) {
this.list.remove(firstRow);
this.fireTableDataChanged();
}
}
我的手机编辑器和手机渲染器:
public class renderediter extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
//Clientdef1 clientdef ;
Frand list;
public renderediter(){
//clientdef = new Clientdef1();
}
/*private void updateData(Frand feed, boolean isSelected, JTable table) {
this.feed = feed;
clientdef.setconncted(feed.iscon);
clientdef.name.setText(feed.name);
if (isSelected) {
clientdef.setBackground(table.getSelectionBackground());
}else{
clientdef.setBackground(table.getSelectionForeground());
}
}*/
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
Frand frad = (Frand)value;
System.err.println("-------------------------\n f1 called\n ------------------");
//updateData(feed, true, table);
frad.def.setBackground(table.getSelectionBackground());
return frad.def;
}
@Override
public Object getCellEditorValue() {
return null;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Frand frad = (Frand)value;
// updateData(feed, isSelected, table);
if (isSelected) {
frad.def.setBackground(table.getSelectionBackground());
}
else{
frad.def.setBackground(Color.white);
}
return frad.def;
}
}
contact_tab = new javax.swing.JTable();
this.module = new frandtabmodule(client.frands);
contact_tab.setModel(module);
contact_tab.setDefaultEditor(Frand.class, new renderediter());
contact_tab.setDefaultRenderer(Frand.class, new renderediter());
contact_tab.setRowHeight(45);
jsp_contact.add(contact_tab);
jsp_contact.repaint();
jsp_contact.revalidate();
contact_tab.setColumnSelectionAllowed(true);
表格创建:
public class renderediter extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
//Clientdef1 clientdef ;
Frand list;
public renderediter(){
//clientdef = new Clientdef1();
}
/*private void updateData(Frand feed, boolean isSelected, JTable table) {
this.feed = feed;
clientdef.setconncted(feed.iscon);
clientdef.name.setText(feed.name);
if (isSelected) {
clientdef.setBackground(table.getSelectionBackground());
}else{
clientdef.setBackground(table.getSelectionForeground());
}
}*/
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
Frand frad = (Frand)value;
System.err.println("-------------------------\n f1 called\n ------------------");
//updateData(feed, true, table);
frad.def.setBackground(table.getSelectionBackground());
return frad.def;
}
@Override
public Object getCellEditorValue() {
return null;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Frand frad = (Frand)value;
// updateData(feed, isSelected, table);
if (isSelected) {
frad.def.setBackground(table.getSelectionBackground());
}
else{
frad.def.setBackground(Color.white);
}
return frad.def;
}
}
contact_tab = new javax.swing.JTable();
this.module = new frandtabmodule(client.frands);
contact_tab.setModel(module);
contact_tab.setDefaultEditor(Frand.class, new renderediter());
contact_tab.setDefaultRenderer(Frand.class, new renderediter());
contact_tab.setRowHeight(45);
jsp_contact.add(contact_tab);
jsp_contact.repaint();
jsp_contact.revalidate();
contact_tab.setColumnSelectionAllowed(true);
我所尝试的:
public class renderediter extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
//Clientdef1 clientdef ;
Frand list;
public renderediter(){
//clientdef = new Clientdef1();
}
/*private void updateData(Frand feed, boolean isSelected, JTable table) {
this.feed = feed;
clientdef.setconncted(feed.iscon);
clientdef.name.setText(feed.name);
if (isSelected) {
clientdef.setBackground(table.getSelectionBackground());
}else{
clientdef.setBackground(table.getSelectionForeground());
}
}*/
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
Frand frad = (Frand)value;
System.err.println("-------------------------\n f1 called\n ------------------");
//updateData(feed, true, table);
frad.def.setBackground(table.getSelectionBackground());
return frad.def;
}
@Override
public Object getCellEditorValue() {
return null;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Frand frad = (Frand)value;
// updateData(feed, isSelected, table);
if (isSelected) {
frad.def.setBackground(table.getSelectionBackground());
}
else{
frad.def.setBackground(Color.white);
}
return frad.def;
}
}
contact_tab = new javax.swing.JTable();
this.module = new frandtabmodule(client.frands);
contact_tab.setModel(module);
contact_tab.setDefaultEditor(Frand.class, new renderediter());
contact_tab.setDefaultRenderer(Frand.class, new renderediter());
contact_tab.setRowHeight(45);
jsp_contact.add(contact_tab);
jsp_contact.repaint();
jsp_contact.revalidate();
contact_tab.setColumnSelectionAllowed(true);
添加:client.frands.add(newfrand())代码>
删除:client.frands.remove(frand)代码>
如果我从表中选择了单元格,但希望动态工作,则此操作有效。不要覆盖中的fireTableRowsDeleted()
或相关方法。相反,实现自己的方法来addRow()
,removeow()
,等等。作为指导;本文还研究了一个相关的例子