3

jtable 内のセルのデータを変更しようとしています。これどうやってするの?次のコードを実行すると、エラーが発生します。

JFrame f= new JFrame();
final JTable table= new JTable(10,5);

TableModelListener tl= new TableModelListener(){
  public void tableChanged(TableModelEvent e){

    table.setValueAt("hello world",2,2);
  }
};

table.getModel().addTableModelListener(tl);
f.add(table);
f.pack();
f.setVisible(true);

これも以下で試しましたが、まだ機能しません。何を与える?

table.getModel().setValueAt("hello world",2,2);
4

2 に答える 2

3

table.setValueAt()a 内で呼び出すTableModelListenerと、tableChanged()メソッドが呼び出され、続いてsetValueAt()メソッドが再度呼び出されるというように無限に繰り返され、StackOverflowError.

CellEditorListener1 つの解決策は、代わりにa を使用することです。このを参照してください。

于 2012-10-28T23:45:11.373 に答える
0

Rob Camick の例を使用すると、このクラスを使用して古い値と新しい値を取得できます。

また、ブログの最後を見て、最後の変更がテーブルに発生したことを処理するために、追加のコードをフォームの読み込みイベントに追加するという私の投稿を参照してください。

 MouseEvent me = new MouseEvent(tblDetailInfo, 0, 0, 0, 100, 100, 1, false);
for(MouseListener ml: tblDetailInfo.getMouseListeners()){
ml.mouseClicked(me); }
于 2012-10-29T10:57:41.060 に答える