Наличие только c столбца для выбора JTable и / или получение данных только из одного столбца - PullRequest
0 голосов
/ 13 марта 2020

У меня есть программа Swing с JTable, и есть два столбца: один для имен и один для телефонных номеров, связанных с этими именами. В настоящее время программа позволяет выбирать строки, что приводит к выбору данных в обоих столбцах. Я хочу, чтобы выбранные данные выводились в массив строк, но только данные из определенного столбца (с номерами телефонов), независимо от того, сколько строк выбрано. Как бы я go об этом?

Я думал о том, чтобы изменить setColumnSelectionAllowed(false) на setColumnSelectionAllowed(true) и позволить щелкнуть JHeader, чтобы выделить всю строку, или каким-то образом разрешить поместить getValueAt(int row, int column) в массив и разрешить только чтение столбца телефонных номеров.

Код для инициализации таблицы:

        // Initializing the JTable
        String[] columns = {"Student", "Phone"};
        students = new JTable(data, columns);
        students.setGridColor(Color.lightGray);
        students.setPreferredScrollableViewportSize(new Dimension(500, 400));
        TableColumnModel columnModel = students.getColumnModel();
        columnModel.getColumn(0).setPreferredWidth(100);
        columnModel.getColumn(1).setPreferredWidth(100);
        students.setRowHeight(25);
        students.setFillsViewportHeight(true);
        students.setRowSelectionAllowed(true);
        students.setColumnSelectionAllowed(false);
        students.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

Таблица составлена ​​из файла CSV в виде массива:

        String[][] myNewArray1 = new String[30][30]; //creates an array
        Scanner myScanner1 = new Scanner(filePath1); //creates a scanner which uses the text file
        int k = 0;
        while (myScanner1.hasNext()) {
            myNewArray1[k] = myScanner1.nextLine().split(",");
            k++;
        }
        return (myNewArray1);
    }

    // Driver method
    public static void main(String[] args) throws Exception {
        File filePath1 = new File("C:\\Users\\cmorl\\IdeaProjects\\CompSciIA\\src\\CompSciIA.csv"); //file path
        String[][] data1;
        data1 = makeArrayFromTxt(filePath1);
        new Database(data1);
    }

1 Ответ

1 голос
/ 13 марта 2020
 TableModel model =  table.getModel();    
  List <String> data = new ArrayList();
  for (int count = 0; count < model.getRowCount(); count++){
                  data.add(model.getValueAt(count, 0).toString()); //Change 0 with 1 if you want column 2
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...