1

ユーザーがデータを導入して保存する必要があるJXTableがあります。唯一のことは、ユーザーはそれを保存する前に最後に編集されたセルの選択を解除する必要があるということです。そうでない場合、そのセルのデータは保存されません。

私が考えた唯一のことは、保存する直前に現在の選択を自動的に変更することです。これは私が試したものです:

table.getSelectionModel().setSelectionInterval(0, 0);
table.getColumnModel().getSelectionModel().setSelectionInterval(0, 0);

また

table.getSelectionModel().setLeadSelectionIndex(0);
table.getColumnModel().getSelectionModel().setLeadSelectionIndex(0);

どちらも機能していないようですが、これを行うために私が見つけた2つの方法はこれらだけです。

誰かがこれを適切に行う方法を教えてもらえますか、または最後のセルからのデータも保存できるようにするための代替案を提案できますか?

4

1 に答える 1

1

JButtonユーザーがデータを保存したいときに別のコンポーネント()をクリックすると仮定します。そのイベントがいつ発生するかについての参照がある場合は、JXTableそこに次のコードを追加できます。

if (table.isEditing()) {
    table.getCellEditor().stopCellEditing();
}

はモデルのstopCellEditing()状態を保存し、現在選択/編集されているセルを含むすべてのコンテンツを保存できるようにする必要があります。


編集kleopatraが指摘したように、これを処理するデフォルトの(そしてより良い!)方法は、JTableコンポーネントのクライアントプロパティを使用することです。

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

ただしJXTable、これはすでに設定されているはずです。これは、保存機能のUI処理が機能する方法に、フォーカスをテーブルから移動することが含まれていないことを示しています。したがって、本質的には、「保存」イベントが発生しているときにフォーカスを変更したほうがよいでしょう。

于 2012-12-03T15:56:38.097 に答える