JList:按向上/向下按钮排序

问题:有没有一种简单的方法可以使用jFrame上的向上/向下按钮对jList进行排序? 我的JList存储图像文件的路径,并显示带有文件名的字符串。 我想通过单击向上/向上按钮向下/向上移动元素。

这就是我所做的 – 效果是移动选择(蓝色区域),而不是元素。 Button2是按钮“向上”。

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(); } 

感谢您的帮助和耐心 – 提前。 我是个乞丐:)

如果您使用列表模型,它支持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(); }