Java 仅具有特定列可选择JTable和/或仅从一列获取数据

Java 仅具有特定列可选择JTable和/或仅从一列获取数据,java,arrays,swing,jtable,Java,Arrays,Swing,Jtable,我有一个带有JTable的Swing程序,它有两列:一列用于姓名,另一列用于与姓名相关的电话号码。目前,程序允许选择行,这会导致两列中的数据都被选中。我希望所选数据输出到字符串数组中,但无论选择了多少行,仅输出特定列(带有电话号码的列)中的数据。我该怎么办 我正在考虑将setcolumnselectionalowed(false)更改为setcolumnselectionalowed(true),并允许单击JHeader来选择整行,或者以某种方式允许getValueAt(int行,int列)放入

我有一个带有
JTable
Swing
程序,它有两列:一列用于姓名,另一列用于与姓名相关的电话号码。目前,程序允许选择行,这会导致两列中的数据都被选中。我希望所选数据输出到字符串数组中,但无论选择了多少行,仅输出特定列(带有电话号码的列)中的数据。我该怎么办

我正在考虑将
setcolumnselectionalowed(false)
更改为
setcolumnselectionalowed(true)
,并允许单击
JHeader
来选择整行,或者以某种方式允许
getValueAt(int行,int列)
放入数组中,只允许读取电话号码列

初始化表的代码:

        // 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);
    }
TableModel model=table.getModel();
列表数据=新的ArrayList();
对于(int count=0;count
这段代码似乎有效,但现在不行,我不确定这到底是怎么可能的。但是现在我想知道代码一开始是如何工作的,因为在for循环中if
count
小于
model.getRowCount()
count
以1的增量增加,那么这不就是打印所有给定列的(0或1)数据,而不是特定的选定数据吗?这就是它目前正在做的事情,但我记得它工作过一两次。我不知道,也许这似乎令人难以置信。也许代码顺序是一个因素?不。这个计数是针对行的。因此,对于所有行,代码将在列表中添加指定行第0列或第1列的数据。如果您已经知道所选的行和列,那么可以调用model.getValueAt
 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
   }