我的JComboBox有问题。
说明
我通过在Textfield中写入我的文件名来创建一个新文件。通过单击按钮我创建一个具有此值的文件并将其添加到我的JComboBox中,但我只看到Object值,例如“[Ljava.io.FIle; @ 1b1428d”,这就是问题所在。用户甚至不知道这个值意味着什么所以我需要我的文件名。我搜索了很长时间,是toString()
不起作用:D
我的代码如下所示:JComboBox TxtDoc = new JComboBox(create());
public File[] create(){
FileSystemView SYSTEM = FileSystemView.getFileSystemView();
String user = System.getProperty("user.home")+"\\notes";
File userdir = new File(user);
File[] fileList = SYSTEM.getFiles(userdir, true);
return fileList;
}
newTxt.addMouseListener(new MouseAdapter() {
@SuppressWarnings("unchecked")
public void mouseClicked(MouseEvent event){
new Documents().createTxtDoc(); // <-- this just open a new frame with my textfield and a button.
TxtDoc.addItem(create());
}
});
谢谢你的帮助 问候空白
答案 0 :(得分:1)
迭代它:
for (File f : fileList) {
TxtDoc.addItem(f);
}
答案 1 :(得分:1)
您将数组File
添加为组合框的单个元素(这是addItem
所做的,添加A(单个)项目)
有几种方法可以做到这一点,一种可能只是重置组合框的模型......
TxtDoc.setModel(new DefaultComboBoxModel(create());
这具有首先删除所有先前元素的良好副作用
话虽如此,你可能不喜欢结果......
您可能需要考虑提供自定义单元格渲染以仅渲染文件的名称。有关详细信息,请参阅How to Use Combo Boxes和Concepts: Editors and Renderers