簡體   English   中英

JTable選擇和TableModel

[英]JTable Selection and TableModel

我遇到了JTable和與之關聯的TableModel的問題。 這里的問題是,如果我在JTable上進行行/行選擇,我想從TableModel獲取特定的行對象並將其傳遞到某處。 有誰知道如何有效地做到這一點?

假設您有自定義TableModel,您可以這樣做:

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (rowIndex >= items.size()) {
    return null;
}
Object obj = items.get(rowIndex);
if (obj == null) {
      return null;
}

switch (columnIndex){
case -1:
          return obj;
    case 0: ...

(假設items是存儲對象的List)

...然后當你需要給定行的對象時,只需通過調用tableModel.getValueAt(row, -1);來獲取它tableModel.getValueAt(row, -1);

我做了類似的申請。 在我的任務中,我必須從一個表中獲取數據(行/行)並將其拖到另一個表中。 即,如果用戶從一個表中選擇行/行,他應該能夠拖動到另一個表。

當用戶選擇行時使用tableA.getSelectedRow()。 現在循環以獲取每個選定行的所有列。 將每一行存儲在一個String中,並使用換行符作為行的結尾。 通過字符串導入解析並獲取每一行。

// Sample code that I have worked on.
protected String exportString(JComponent c) {
JTable table = (JTable) c;
rows = table.getSelectedRows();
int colCount = table.getColumnCount();
    StringBuffer buff = new StringBuffer();
for (int i = 0; i < rows.length; i++) {
     for (int j = 0; j < colCount; j++) {
          Object val = table.getValueAt(rows[i], j);
          if (j != colCount - 1) {
              buff.append(",");
          }
         }
     if (i != rows.length - 1) {
         buff.append("\n");
     }
     }
     System.out.println("Export Success");
 return buff.toString();
}

希望這可以幫到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM