ValidAcTableModel と呼ばれる DefualtTableModel を持つ JTable を持つ GUI を持つ、私が作成したいくつかのソフトウェアを使用する場合、validAcTable を初期化するとき、これは私が使用しているロジックです:
ListSelectionModel cellSelectModel = validAcTable.getSelectionModel();
cellSelectModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cellSelectModel.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (d == 0) {
suggestedAcTable.clearSelection();
d = 1;
} else {
String selectedAcData = null;
String selectedSentData = null;
String selectedDefData = null;
String selectedBoolean = null;
validAcTable.revalidate();
int[] selectedRow = validAcTable.getSelectedRows();
for (int i = 0; i < selectedRow.length; i++) {
selectedAcData = validAcTable.getValueAt(selectedRow[i], 0).toString();
selectedDefData = validAcTable.getValueAt(selectedRow[i], 1).toString();
selectedBoolean = validAcTable.getValueAt(selectedRow[i], 2).toString();
selectedSentData = getSentence((String) validAcTable.getValueAt(selectedRow[i], 0));
if (selectedSentData == null) {
selectedSentData = "";
}
}
Acronym acr = new Acronym(selectedAcData, selectedSentData, selectedDefData, false);
changedAcList.add(acr);
//String has a white space....need to redo this...
currentAccTextField.setText(selectedAcData);
currentSentenceTextArea.setText(selectedSentData);
currentDefTextArea.setText(selectedDefData);
if (selectedBoolean != null) {
if (selectedBoolean.equals("true")) {
acceptAccButton.setEnabled(false);
validLabel.setText("Definition is valid in document");
} else {
acceptAccButton.setEnabled(true);
validLabel.setText("Definition is not valid");
}
}
d = 0;
}
}
});
GUI の [New] ボタンをクリックして使用すると、
validAcTableModel.getDataVector().removeAllElements();
テーブルをリロードして項目を選択し、次を使用して selectedRow を取得しようとすると:
private void acceptAccButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (validAcTable.getSelectedRow() >= 0) {
StringBuilder acDocText = new StringBuilder();
String acNameDefthmlText = "";
}
}
これは、すべての要素を削除した後、選択した行に常に負の値を返し、行を選択すると行を再追加します。助けていただければ幸いです。valueChanged に ListSelectionListener を使用しています。