java winform開發:JTable詳解

來源:互聯網
上載者:User

列表在任何一門開發語言中都佔有非常重要的地位,在.Net中有GridView,在extjs中有GridPanel。。。,而在java Swing中,它的名字叫JTable。這兩天在研究JTable的使用,也有一些收穫,所以在這裡跟大家分享交流一下,下面的內容將包括:1)JTable的基本用法;2)怎樣為JTable添加行點擊響應事件,雙擊後開啟視窗;3)怎樣為JTable的行添加標識,如行id等;4)怎樣在JTable中動態添加新行;

1)JTable的基本用法:

我用的IDE是NetBeans,由於也是簡單做幾個頁面的用戶端,主要還是Web開發的,所以暫時不打算深究java winform開發,所以介面怎麼快就怎麼做了,我直接在表單的“設計”模式下直接拖“表格”出來就了事,在預設的情況下,這個表格還會有幾行幾列的填充內容的,如果需要編輯,可以先點擊表格進入它的編輯狀態,然後右擊,選擇“表內容”就可以進行表格的行和列的編輯了,不過通常情況下,表格的內容都是動態產生的,所以在控制項上直接編輯它的內容的意義是不大的,當然,做DEMO時比較有用。

怎樣為JTable初始化內容呢?我的習慣是在frame的構造方法來完成,其實通過查API可以得知,JTable支援多種構造方法,而我認為動態產生資料來說,用Vector對象的形式來產生列頭配置及資料配置是比較簡單直觀的方法,下面來看個例子:

String[] columnModel = {"時間","編號","金額","操作員"};  Vector cmVector = new Vector();  for(int i = 0,cmCount = columnModel.length;i < cmCount;i++){      cmVector.addElement(columnModel[i]);  }  //繪製資料模型  Vector dataVector = new Vector();  TempOrdersList tempOrderList = TempOrdersManager.getInstance().getList();  int billCount = tempOrderList.size();  if(billCount > 0){      for(int j = 0;j < billCount;j++){          TempOrders orderItem = (TempOrders)tempOrderList.get(j);          String id = orderItem.getId();          String time = orderItem.getTime();          String no = orderItem.getNo();          float total = orderItem.getTotal();          String user = orderItem.getUser();          CustomTableCell idCell = new CustomTableCell(id,no,orderItem);          Vector rowVector = new Vector();          rowVector.addElement(time);          rowVector.addElement(idCell);          rowVector.addElement(total);          rowVector.addElement(user);          dataVector.addElement(rowVector);          rowVector = null;          idCell = null;          orderItem = null;      }  }  DefaultTableModel tableModel = new DefaultTableModel(dataVector,cmVector){      @Override    public boolean isCellEditable(int row,int column){          //只允許使用者對第四列的資料進行編輯(第四列是數量)          if(column == 4){              return true;          }else{              return false;          }      }  };  BillTable.setModel(tableModel);  cmVector =  null;  dataVector = null;

使用Vector對象作為構造方法的對象時,要傳入兩個Vector的執行個體,第一個是儲存資料的Vector,第二個參數是儲存列頭資訊的Vector,在

樣本中的dataVector是通過遍曆一個list對象而動態填充內容的,在執行個體化並初始化好Vector後,只要調用JTable的setModel方法,就可以將列頭及資料的資訊顯示在表格中啦。

2)怎樣添加行點擊事件

首先,在JTable的設計檢視中先選中JTable,然後右擊,在事件的快顯功能表中依次選中"mouse-click”就可以捕捉表格的點擊事件了,在這個事件監聽方法中,會傳入一個java.awt.event.MouseEvent類的執行個體evt,用evt.getClickCount(),就可以知道觸發該事件時使用者的點擊次數,只要這個方法返回的值大於等於2,就說明使用者雙擊了,下面的範例程式碼,供大家參考:

if(evt.getClickCount() >= 2){              int rowIndex = productTable.rowAtPoint(evt.getPoint());              int columnIndex = Common.getIndetityColumn(productTable);              //如果沒有找到帶有標記的列,就不向下執行了              if(columnIndex == -1){                  return;              }              CustomTableCell identifyCell = (CustomTableCell)productTable.getValueAt(rowIndex, columnIndex);              String productId = identifyCell.getId();              ProductDetail productDetail = new ProductDetail(productId);              Common.centerWindow(productDetail);              //productDetail.setVisible(true);          }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.