繁体   English   中英

如何从JList获取选定的文件

[英]How to get a selected file from JList

我使用下面的代码通过JFileChooser在我的JList中添加了一个名为test.xml的文件;

for (File file : fileChooser.getSelectedFiles()) {
   vector.addElement(file);
}
System.out.println("Added..!!");
list.updateUI();

现在,我必须从Jlist中选择一个文件,然后将其转换为另一个文档。 如果我提供输入,则转换步骤有效;

File file = new File("test.xml");

但是如果我给这个,那是行不通的。

for (int j : list.getSelectedIndices()) {
   File file = vector.elementAt(j);
   //-------code for conversion-------//
}

该列表及其向量是使用以下代码创建的:

                 vector = new Vector<File>(); 
                 final JList list = new JList(vector);    
                 scrollPane.setViewportView(list);"

谁能告诉我如何从JList中选择该微粒文件以进行转换? 提前感谢..!

JList有方法

public Object getSelectedValue()
public Object[] getSelectedValues()

用它们来获取文件

我绝对没有StanislavL建议的代码或使用您的代码的问题。 您的代码中肯定还有其他内容没有显示给我们。 这是一个SSCCE显示它有效

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class Test {

    public static void main(String... args) {
        JFrame frame = new JFrame();
        final Vector<File> files = new Vector<File>();
        final JList list = new JList(files);
        list.setVisibleRowCount(5);
        final JButton selectFile = new JButton("Select file...");
        selectFile.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setMultiSelectionEnabled(true);
                fileChooser.showOpenDialog(selectFile);
                if (fileChooser.getSelectedFiles() != null) {
                    for (File file : fileChooser.getSelectedFiles()) {
                        files.add(file);
                    }
                    list.updateUI();
                }

            }
        });
        final JButton click = new JButton("Click me");
        click.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                StringBuilder sb = new StringBuilder("The following files are selected in the list:\n");
                /*for (Object o : list.getSelectedValues()) {
                    sb.append(((File) o).getAbsolutePath()).append('\n');
                }*/
                for (int i : list.getSelectedIndices()) {
                    sb.append(files.get(i).getAbsolutePath()).append('\n');
                }
                JOptionPane.showMessageDialog(click, sb.toString());
            }
        });
        JPanel panel = new JPanel(new BorderLayout());
        panel.add(selectFile, BorderLayout.WEST);
        panel.add(click, BorderLayout.EAST);
        JScrollPane scrollPane = new JScrollPane(list);
        panel.add(scrollPane);
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM