[英]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.