所以我试图实现一个动态可编辑的列表,我想在我点击最后一行或者编辑最后一行时动态添加一行。 虽然我想知道如何实现actionlistener,但我知道如何添加行。非常感谢帮助。
import java.awt.BorderLayout;
import java.util.Date;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
public class EditListAction {
public static void main(String args[]) {
TableModel model = new AbstractTableModel() {
Object rowData[] = {"English","hindi","Spanish","Russian" };
String columnName = new String("Languages");
public int getColumnCount() {
return 1;
}
public String getColumnName() {
return columnName;
}
public int getRowCount() {
return rowData.length;
}
public Object getValueAt(int row,int col) {
return rowData[row];
}
public Class getColumnClass(int column) {
return (getValueAt(0, 1).getClass());
}
public void setValueAt(Object value, int row,int column) {
if(column==0){
rowData[row] = value;
}
}
public boolean isCellEditable(int row, int column) {
return (column == 0);
}
};
JFrame frame = new JFrame("Column Renderer Table");
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(400, 150);
frame.setVisible(true);
}
}
答案 0 :(得分:3)
我知道如何添加行
不基于您发布的代码。您的自定义TableModel使用固定大小的数组来存储数据。因此,除非每次都重新创建一个效率不高的数组,否则您将无法添加新行。
而只是使用DefaultTableModel。它已经支持addRow(...)方法。
如果要在单击最后一行时添加行,请将MouseListener添加到表中。然后,您可以使用JTable的rowAtPoint(...)方法来确定是否单击了最后一行。
如果要在编辑最后一行时添加行,则可以将TableModelListener添加到TableModel。然后,您可以侦听最后一行的更新。