Я работаю над небольшой программой для копирования файлов в буфер обмена. Комбобокс заполняется на основе папок/файлов в указанной директории. Первый comboBox
заполнен соответствующим образом. Теперь, когда добавлен второй comboBox, первый ящик больше не отображается, а поле, которое отображается, не загружено.Combo Box не отображает данные
Обновлено: Я переписал код и теперь вижу второй comboBox. Данные, которые хранятся в Object [] субфайлах не передаются во вторую ComboBox
public class s2 extends JPanel implements ActionListener, Runnable{
public static File folder = new File("u:/response");
static String temp = "";
final JComboBox t1 = new JComboBox();
final JComboBox t2 = new JComboBox();
final Object [] files;
Object [] subFiles;
List<String> list1 = new ArrayList<String>();
static List<File> list2 = new ArrayList<File>();
public s2() {
List<String> list1 = new ArrayList<String>();
List<File> list2 = new ArrayList<File>();
for (File fl : folder.listFiles())
{
list1.add(fl.getName().toUpperCase());
}
files = list1.toArray();
t1.setModel(new DefaultComboBoxModel(files));
}
public class tier1 implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
int i = t1.getSelectedIndex();
File node = new File(folder.getAbsoluteFile() + "\\" + list1.get(i));
listFiles(node);
subFiles = list2.toArray();
t2.setModel(new DefaultComboBoxModel(subFiles));
}
}
public class tier2 implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e2){
}
}
public static void listFiles (File folder){
for (final File fileEntry : folder.listFiles()){
if (fileEntry.isFile()){
temp = fileEntry.getAbsolutePath();
list2.add(fileEntry);
System.out.println(temp);
}
}
}
@Override
public void run() {
JFrame f = new JFrame("Response Library");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
UtilityBar ub = new UtilityBar();
f.setJMenuBar(ub.menuBar);
f.add(this);
f.add(t1);
f.add(t2, BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
f.setPreferredSize(new Dimension (75,300));
}
public static void main(String[] args) {
EventQueue.invokeLater(new s2());
}
спасибо @kiheru. Ваши предложения помогли мне получить видимость второго блока comboBox. Я переписал код тому, что, как я думаю, имел в виду в вашем комментарии, относящемся к потоку событий. – Elle