日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jtabel 遍历_使用抽象表模型获取JTable中选定的行

發布時間:2023/12/2 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jtabel 遍历_使用抽象表模型获取JTable中选定的行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在下面的示例中,TableModel更新Set checked在執行setValueAt()..相鄰模型JList偵聽表的模型并顯示當前選定的行號。該示例假定所選行數與行數相比較小。注意使用TreeSet,其迭代器保留了元素的自然順序。import?java.awt.Dimension;import?java.awt.EventQueue;import?java.awt.GridLayout;import?java.util.ArrayList;import?java.util.List;

import?java.util.Set;import?java.util.TreeSet;import?javax.swing.BorderFactory;import?javax.swing.DefaultListModel;

import?javax.swing.JFrame;import?javax.swing.JList;import?javax.swing.JPanel;import?javax.swing.JScrollPane;

import?javax.swing.JTable;import?javax.swing.event.TableModelEvent;import?javax.swing.event.TableModelListener;

import?javax.swing.table.AbstractTableModel;/**?@see?http://stackoverflow.com/a/13919878/230513?*/public?class?CheckTable?{

private?static?final?CheckModel?model?=?new?CheckModel(5000);

private?static?final?JTable?table?=?new?JTable(model)?{

@Override

public?Dimension?getPreferredScrollableViewportSize()?{

return?new?Dimension(150,?300);

}

};

public?static?void?main(String[]?args)?{

EventQueue.invokeLater(new?Runnable()?{

@Override

public?void?run()?{

JFrame?f?=?new?JFrame("CheckTable");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setLayout(new?GridLayout(1,?0));

f.add(new?JScrollPane(table));

f.add(new?DisplayPanel(model));

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}

});

}

private?static?class?DisplayPanel?extends?JPanel?{

private?DefaultListModel?dlm?=?new?DefaultListModel();

private?JList?list?=?new?JList(dlm);

public?DisplayPanel(final?CheckModel?model)?{

super(new?GridLayout());

this.setBorder(BorderFactory.createTitledBorder("Checked"));

this.add(new?JScrollPane(list));

model.addTableModelListener(new?TableModelListener()?{

@Override

public?void?tableChanged(TableModelEvent?e)?{

dlm.removeAllElements();

for?(Integer?integer?:?model.checked)?{

dlm.addElement(integer);

}

}

});

}

}

private?static?class?CheckModel?extends?AbstractTableModel?{

private?final?int?rows;

private?List?rowList;

private?Set?checked?=?new?TreeSet();

public?CheckModel(int?rows)?{

this.rows?=?rows;

rowList?=?new?ArrayList(rows);

for?(int?i?=?0;?i?

rowList.add(Boolean.FALSE);

}

}

@Override

public?int?getRowCount()?{

return?rows;

}

@Override

public?int?getColumnCount()?{

return?2;

}

@Override

public?String?getColumnName(int?col)?{

return?"Column?"?+?col;

}

@Override

public?Object?getValueAt(int?row,?int?col)?{

if?(col?==?0)?{

return?row;

}?else?{

return?rowList.get(row);

}

}

@Override

public?void?setValueAt(Object?aValue,?int?row,?int?col)?{

boolean?b?=?(Boolean)?aValue;

rowList.set(row,?b);

if?(b)?{

checked.add(row);

}?else?{

checked.remove(row);

}

fireTableRowsUpdated(row,?row);

}

@Override

public?Class>?getColumnClass(int?col)?{

return?getValueAt(0,?col).getClass();

}

@Override

public?boolean?isCellEditable(int?row,?int?col)?{

return?col?==?1;

}

}}

總結

以上是生活随笔為你收集整理的jtabel 遍历_使用抽象表模型获取JTable中选定的行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。