Как показать много значений JTable выбранных строк в одну область JText - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу создать функцию, если щелкнуть несколько строк, данные будут выведены в одну область 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());

Я пробовал этот метод, но результаты на самом деле удваивают значение с тем же значением.

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 20 сентября 2019

Это можно сделать, построив строку на основе каждой строки таблицы, выбранной в модели таблицы.Ниже приведен метод, который будет возвращать массив строк каждой выбранной строки таблицы.Каждый элемент этого возвращаемого строкового массива содержит строку с разделителем по трубе (|), содержащую все данные столбца для каждой выбранной строки:

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;
}

Теперь возьмите этот строковый массив и создайте строку Single для передачи в JTextArea.Это может выглядеть примерно так:

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

jTextArea1.setText(sb.toString());

Возможно, это не совсем то, что вы искали, но это может дать вам представление о том, как достичь того, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...