listesine eklendiğinde JList eklenemiyor Dosyaları seçen ve bunları JList'e ekleyen bir program yazdım. Program çalışıyor ve listeye dosyaları eklemek için kod şu şekildedir:Bir JScrollPane
JPanel pane;
File newFile[];
static List<File> files = new ArrayList<File>();
static DefaultListModel<File> listModel = new DefaultListModel<>();
JList<File> fileList = new JList<>(listModel);
JPanel listPane = new JPanel();
pane.add(listPane, BorderLayout.CENTER);
listPane.setBackground(Color.LIGHT_GRAY);
listPane.setBorder(new EmptyBorder(0, 20, 0, 0));
listPane.setLayout(new BorderLayout());
listPane.add(fileList);
}
void getFile() {
final JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Select File...");
fc.setApproveButtonText("Select");
fc.setMultiSelectionEnabled(true);
int returnVal = fc.showOpenDialog(pane);
if (returnVal == JFileChooser.APPROVE_OPTION) {
newFile = fc.getSelectedFiles();
}
}
void setFile() {
int i = 0;
while (i < newFile.length) {
files.add(newFile[i]);
listModel.addElement(newFile[i]);
i++;
}
}
Bu seçme ve dosya eklemek için taban kodudur. Yani şimdi ben bölmesinde bir kaydırma çubuğu istiyoruz, bu yüzden böyle bir JScrollPane onu modifiye:
JScrollPane listPane = new JScrollPane();
pane.add(listPane, BorderLayout.CENTER);
listPane.setBackground(Color.LIGHT_GRAY);
listPane.setBorder(new EmptyBorder(0, 20, 0, 0));
listPane.setViewportView(fileList);
listPane.add(fileList);
}
Yani her şey hatasız derler, ama hiçbir şey JScrollPane eklenir. Bir JScrollPane'in normal bir JPanel gibi kullanılabilmesi benim anlayışım, taşma sırasında kaydırma çubukları olması dışında. JScrollPanes hakkında burada eksik olduğum bir şey var mı?
Tavsiyeler: 1) Kaydırma bölmesi oluşturulduğunda ve GUI'ye eklendiğinde, listeyi kaydırma bölmesine ekleyin. 2) Bundan sonra, sadece modele (bunlara öğeler eklemek veya bunları kaldırmak) ile başa çıkmak. 3) 'Statik Listeyi dosyaları = yeni ArrayList ();' kaldırın ve modelden doğrudan herhangi bir bilgi veya 'Dosya 'alın. 4) Statik defaultListModel listModel = new DefaultListModel <>(); '' statik 'önekini kaldırın. Statik nadiren doğru çözümdür (problem ne olursa olsun). 5) Daha iyi yardım için, bir [MCVE] veya [Kısa, Kendini İçeren, Doğru Örnek] (http://www.sscce.org/) gönderin. –