当使用一些软件时,我已经创建了一个带有JTable的gui,其中包含一个名为validAcTableModel的DefualtTableModel,当我初始化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上的新建按钮并使用
时 validAcTableModel.getDataVector().removeAllElements();
当我尝试重新加载表并选择一个项目并使用:
获取selectedRow时 private void acceptAccButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (validAcTable.getSelectedRow() >= 0) {
StringBuilder acDocText = new StringBuilder();
String acNameDefthmlText = "";
}
}
这总是在删除所有元素后对所选行返回一个负数,然后在我选择一行时重新添加行。我将感激你的帮助。我使用ListSelectionListener的valueChanged.
-
当我尝试重新加载表并选择一个项目并获得selectedRow使用
以编程方式将选择设置为所需的行。setRowSelectionInterval(int index0, int index1);
-
总是在删除后返回所选行的负值所有元素
any row isn't selected
返回 Integer -1
public int getSelectedRow()
Returns the index of the first selected row, -1 if no row is selected.
Returns:
the index of the first selected row
- 为获得更好的帮助,尽快发布SSCCE
要清除数据,请更改方法javax.swing.table.DefaultTableModel.setRowCount(int)
;
((DefaultTableModel) validAcTable.getModel()).setRowCount(0);
要重新填充模型,使用:
javax.swing.table.DefaultTableModel.setDataVector(Vector, Vector);
javax.swing.table.DefaultTableModel.setDataVector(Object[][], Object[])
请记住使用模型的相同实例。
使用DefaultTableModel
中的辅助方法。它们将启动用于更新UI的适当事件。