我正在尝试向java组合框添加多个项目,但是我的只显示列表中的第一个项目。有帮助吗?这是我自己的项目,用户可以从下拉列表中选择最近的图像,它将打开。最后,它将像一个带有下拉菜单的绘图应用程序。
public class ComboBoxExample extends JFrame
implements ItemListener {
private JLabel display;
private JComboBox<String> box;
private String[] distros;
public ComboBoxExample() {
initUI();
}
private void initUI() {
String path = ".";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
String files1 = listOfFiles[i].getName();
System.out.println(files1);
distros = new String[] {files1};
Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);
box = new JComboBox<>(distros);
box.addItemListener(this);
display = new JLabel("");
gl.setAutoCreateContainerGaps(true);
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(box,
GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addGap(20)
.addComponent(display)
);
gl.setVerticalGroup(gl.createParallelGroup(BASELINE)
.addComponent(box, GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(display)
);
pack();
setTitle("JComboBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);}}
}
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
display.setText(e.getItem().toString());
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ComboBoxExample ex = new ComboBoxExample();
ex.setVisible(true);
}
});
}
}
答案 0 :(得分:0)
您正在为每个文件反复创建整个指南。因此,您只能在框中获得一个字符串。我建议你将初始化方法分成几个较小的方法。这有助于您了解实际情况。