我正在开发一个小程序来将文件复制到剪贴板。组合框基于指定目录中的文件夹/文件填充。第一个comboBox
填写得恰当。现在已经添加了第二个组合框,第一个框不再显示,并且显示的框没有加载项。
更新:我已经重写了代码,现在可以看到第二个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());
}
答案 0 :(得分:2)
JFrame
使用BorderLayout
作为默认布局管理器。当你这样做
f.add(t1);
f.add(t2);
两个组合框都放在相同的位置(BorderLayout.CENTER
),布局管理器在每个位置只支持一个组件。
f.add(t1);
f.add(t2, BorderLayout.SOUTH);
将第二个放在第一个下面,这样两个组合框都应该可见。
此外,您应该只在event dispatch thread。
中创建和访问swing组件