0

そのため、動的に編集可能なリストを実装しようとしています。最後の行をクリックしたとき、または最後の行を編集したときに、動的に行を追加したいと思います。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);
   }
 }
4

1 に答える 1

3

行を追加する方法を知っています

投稿したコードに基づいていません。カスタム TableModel は固定サイズの配列を使用してデータを格納します。したがって、毎回配列を再作成しない限り、新しい行を追加することはできませんが、これはあまり効率的ではありません。

代わりに、DefaultTableModel を使用してください。すでに addRow(...) メソッドをサポートしています。

最後の行をクリックしたときに行を追加する場合は、MouseListener をテーブルに追加します。次に、JTable の rowAtPoint(...) メソッドを使用して、最後の行がクリックされたかどうかを判断できます。

最後の行が編集されたときに行を追加する場合は、TableModelListener を TableModel に追加できます。その後、最後の行への更新をリッスンできます。

于 2013-02-12T16:14:10.293 に答える