有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在一个JText区域中显示大量值JTable选定行

我想做一个函数,如果单击多行,将在一个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) 个答案

  1. # 1 楼答案

    可以通过基于通过表模型选择的每个表行构建字符串来实现这一点。下面是一个方法,它将返回所选每个表行的字符串数组。此返回字符串数组的每个元素都包含一个以管道(|)分隔的字符串,该字符串包含每个选定行的所有列数据:

    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());
    

    这可能不是你想要的,但它可能会给你一个如何实现你需要的想法