2012-05-25 3 views
1

Вопрос: Есть ли простой способ отсортировать jList с помощью кнопок Up/Down на jFrame? My 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(); 
} 
Смежные вопросы