如何将大量值 JTable 选定的行显示到一个 JText 区域中



我想创建一个函数,如果单击多行,则会在一个 JText 区域中显示数据。 我试试这个

Private void jTable1MouseClicked(java. awt.event.MouseEvent evt) {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel() ;
int selectedRowIndex = jTable1.getSelectedRow;
jTextArea1.setText(model.getValueAt(selectedRowIndex, 0).toString() + "," + model.getValueAt(selectedRowIndex, 0).toString());

我尝试了这种方法,但结果实际上是具有相同值的双倍值。

请帮助我。

您可以通过基于通过表模型选择的每个表行构建字符串来执行此操作。下面是一个方法,它将返回所选每个表行的 String 数组。此返回的字符串数组的每个元素都包含一个竖线 (|( 分隔的字符串,其中包含每个选定行的所有列数据:

public static String[] getJTableSelectedRowsData(JTable theTable) {
// Gets the data contained within all Selected Table Rows.
// Each array element within the returned string array will
// contain a Pipe delimited data string of each selected row.
int[] selectedRows = theTable.getSelectedRows();
String[] resultArray = new String[selectedRows.length];
DefaultTableModel dtm = (DefaultTableModel) theTable.getModel();
int nCol = dtm.getColumnCount();
for (int i = 0; i < selectedRows.length; i++) {
String resultString = "";
for (int j = 0; j < nCol; j++) {
resultString += resultString.equals("") ? dtm.getValueAt(selectedRows[i], j).toString()
: "|" + dtm.getValueAt(selectedRows[i], j).toString();
}
resultArray[i] = resultString;
}
return resultArray;
}

现在,获取此字符串数组并构建一个要转储到 JTextArea 中的单个字符串。它可能是这样的:

String[] selectedTableRecords = getJTableSelectedRowsData(jTable1); 
StringBuilder sb = new StringBuilder();
for (String str : selectedTableRecords) {
sb.append(str).append(System.lineSeparator());
} 
jTextArea1.setText(sb.toString());

这可能不完全是您想要的,但它可能会让您了解如何实现所需的目标。

最新更新