Dos*_*i89 1 java sorting swing selection 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();
}
Run Code Online (Sandbox Code Playgroud)
这就是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();
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助和耐心 - 提前.我是个傻瓜:)
如果您使用列表模型,支持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();
}
Run Code Online (Sandbox Code Playgroud)