2012-05-25 47 views
1

問題:有沒有簡單的方法來使用jFrame上的向上/向下按鈕對jList進行排序? 我的JList存儲圖像文件的路徑,並顯示帶有文件名稱的字符串。我想通過點擊/向上按鈕向下/向上移動元素。JList:按上/下按鈕排序

下面是我所做的 - 效果是移動選擇(藍色領域),而不是元素。按鈕2是按鈕「向上」。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    int indexOfSelected = jList1.getSelectedIndex(); 
    File selectedFile = (File) jList1.getSelectedValue(); 
    indexOfSelected = indexOfSelected - 1; 
    jList1.setSelectedIndex(indexOfSelected); 
    jList1.updateUI(); 

} 

這是JList的是如何創建的:

public void openButtonActionPerformed() { 

     fc.setMultiSelectionEnabled(true); 
     int returnVal = fc.showDialog(null, "Open"); 

     if (returnVal == JFileChooser.APPROVE_OPTION) { 
       file = fc.getSelectedFiles(); 
       len = file.length; 
       System.out.println(len); 
     }  
     for (i=0; i<len; i++){ 
      listModel.add(i, file[i]); 
     } 
     jList1.setModel(listModel); 
     jList1.updateUI(); 
} 

感謝您的幫助和耐心 - 提前。我是個初學者:)

回答

6

如果使用列表模式,支持set操作,你可以做以下操作:

private void swapElements(int pos1, int pos2) { 
    File tmp = (File) listModel.get(pos1); 
    listModel.set(pos1, listModel.get(pos2)); 
    listModel.set(pos2, tmp); 
} 

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    int indexOfSelected = jList1.getSelectedIndex(); 
    swapElements(indexOfSelected, indesOfSelected - 1); 
    indexOfSelected = indexOfSelected - 1; 
    jList1.setSelectedIndex(indexOfSelected); 
    jList1.updateUI(); 
}