0

GUI アプリケーションで を作成JTableしましたが、既に作成した追加ボタンと削除ボタンを使用して行を追加および削除したいのですが、行を削除するときに問題が発生します。選択した行インデックスを取得したいのですがNullPointerException、メソッドを呼び出しgetSelectedRow()ます。私はそれをグーグルで検索しようとしましたが、私の質問の答えが見つかりませんでした.Javaのドキュメントを読んでみましたが、このメソッドは通常その例外をスローしないことがわかりました.

コード:

// creating the table
JTable table = new JTable(model);
    model.addColumn("NO.");
    model.addColumn("Name");
    model.addColumn("Status");
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    table.setRowSelectionAllowed(true);
    table.setShowGrid(false);
    table.getColumnModel().getColumn(0).setPreferredWidth(28);
    table.getColumnModel().getColumn(1).setPreferredWidth(222);
    table.getColumnModel().getColumn(2).setPreferredWidth(100);
    table.setBackground(color);
    table.setPreferredScrollableViewportSize(new Dimension(350,250));
    table.setFillsViewportHeight(true);
    scroll = new JScrollPane(table);
    center.add(scroll);

// adding records to it
public class AddEvent implements ActionListener{
public void actionPerformed (ActionEvent event){

    String text = write.getText();

    if (!text.equals("") && !text.contains(" ")){
        String view = "http://www." + text;
        write.setText(null);
        model.addRow(new Object[]{model.getRowCount()+1, view,"Active"});
    }

}
}


// to remove the selected row
public class RemoveEvent implements ActionListener{
public void actionPerformed (ActionEvent event){
          int index = table.getSelectedRow(); // it throws the exception here
      table.clearSelection();             
      System.out.println(index);
      if(index != -1){
      table.remove(index);
      }

    }

}
4

2 に答える 2

2

ここで例外がスローされている場合

int index = table.getSelectedRow();

それならおそらくtable_ を機能させるには、クラス メンバー変数をインスタンスに割り当てる必要があります。インスタンス化されているときに、変数をシャドウしていないことを確認してください。交換 nullActionListenertableJTable

JTable table = new JTable(model);

table = new JTable(model);
于 2013-05-10T22:00:50.540 に答える