[英]How to display a File[] array in a JList
我正在嘗試顯示我在JList中的文件夾中獲得的文件列表,這是我的代碼,但是當我運行項目並選擇所需的文件夾時,我在輸出控制台中獲得了文件名,但是我可以t在JList中顯示File []數組。
private void jButtonOpenActionPerformed(java.awt.event.ActionEvent evt) {
// Gets the path of the folder selected
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setCurrentDirectory(new File("C:\\...\\ProjectColorCT"));
int show_fileC = fileChooser.showOpenDialog(this);
String pathFolder = null;
if (show_fileC != JFileChooser.CANCEL_OPTION ){
File folderName = fileChooser.getSelectedFile();
pathFolder = folderName.getAbsolutePath();
jTextPathFolder.setText(pathFolder);
}
System.out.println(pathFolder);
// Gets all the names of the files inside the folder selected previously
File folderCortes = new File(pathFolder);
File[] archivos = folderCortes.listFiles();
for (File fichero : archivos) {
System.out.println(fichero.getName());
}
// Create the model for the JList
DefaultListModel model = new DefaultListModel();
// Add all the elements of the array "archivos" in the model
for (int i=0 ; i<archivos.length ; i++){
model.addElement(archivos[i].getName());
}
// Add the JList to the JScrollPane
jCortesList = new JList(model);
jScrollCortes = new JScrollPane(jCortesList);
// Print for testing
for (int i=0 ; i<archivos.length ; i++){
jCortesList.setSelectedIndex(i);
System.out.println(jCortesList.getSelectedValue());
}
}
我要添加一個DefaultListModel();
在將該模型分配給JList
,最后我將該JList
分配給JScrollPane
,但是它沒有在接口中向我顯示列表。
根據您可用的上下文外代碼,顯而易見的答案是,您實際上並未將jScrollCortes
添加到UI中...
private void jButtonOpenActionPerformed(java.awt.event.ActionEvent evt) {
//...
// Add the JList to the JScrollPane
jCortesList = new JList(model);
jScrollCortes = new JScrollPane(jCortesList);
add(jScrollCortes);
revalidate();
repaint();
//...
}
根據類,UI和/或布局的設置方式,這可能有效也可能無效。
更好的解決方案是讓JList
和JScrollPane
已經在UI上創建了一個顯示,然后您要做的就是將新的ListModel
應用於已經存在的JList
當我從Swing控件面板添加JList時,JScrollPane默認創建,並將其名稱更改為jScrollCortes
由於您已經有一個JList
實例(包裝在JScrollPane
),因此您只需要更改模型即可。
DefaultListModel model = new DefaultListModel();
//...
// Add the JList to the JScrollPane
jCortesList.setModel(model);
//jCortesList = new JList(model);
//jScrollCortes = new JScrollPane(jCortesList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.