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循环中ifcount
小于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
}