0
我有一个JTable。当用户选择一列时,这个想法就是float数据被添加到一个ArrayList中。我会稍后尝试在arrayList上做一些统计。ArrayList在监听器外不可用
目前我正在管理将所需数据添加到ArrayList中,并且可以在侦听器中打印到控制台时看到数据。然而,即使ArrayList是从Listener之外声明的,数据仍然不在监听器之外。
TableColumnModel columnModelCompareL = table_CompareL.getColumnModel();
ArrayList<Float> statsCompareL=new ArrayList<Float>();
columnModelCompareL.addColumnModelListener(new TableColumnModelListener() {
public void columnSelectionChanged(ListSelectionEvent e) {
Object[] data = columnToArray(table_CompareL,table_CompareL.getSelectedColumn());
System.out.println("MY data length"+data.length);
try {
for(int i = 0; i < data.length; i++){
if (data[i]!=null){
try {
statsCompareL.add(Float.parseFloat((data[i]).toString().trim()));
} catch (Exception e1) {
System.out.println("nought to add here");
}
}
}
} catch (NumberFormatException e1) {
System.out.println("You haven't selected a numeric column. Please select again");
}
}
@Override
public void columnAdded(TableColumnModelEvent e) {
}
@Override
public void columnRemoved(TableColumnModelEvent e) {
}
@Override
public void columnMoved(TableColumnModelEvent e) {
}
@Override
public void columnMarginChanged(ChangeEvent e) {
}
});
System.out.println("statsCompareL"+statsCompareL);
您是否尝试过声明在类中的任何方法之外的ArrayList这样它会成为你的类中提供anywere? – theVoid
是的。我把它放在课堂的顶部。我想知道是不是因为我从监听器返回void,但似乎并没有列出ArrayList而不是void –
如果您希望最后一行代码行可以打印任何内容:它不会。因为该代码行在ui的创建过程中执行,但稍后调用监听器(用户与ui交互时)。 –