填充JComboBox的正确方法?

Lon*_*ent 5 java arrays arraylist text-files jcombobox

我目前正在Eclipse上使用Java在Java上构建应用程序,作为编程基础知识和基本Java编程的自助指南,这纯粹是出于教育目的,其唯一目的是能够轻松引用主题并在我通过编程来学习它们时进行编程进入本教程应用程序。

随着时间的流逝以及我学习更多的编程组件,应用程序的内容将不断扩展。

所以我的第一个问题归结为正确的形式。

我正在使用一个下拉框(JComboBox),以便从GUI中选择特定主题。我想填充列表并保持程序整洁。所以我的问题是,如何填充JComboBox以便限制混乱的代码。也许是一个文本文件,我可以从该文本文件中单独添加主题并更有效地进行编辑?我追求正确的编程过程,而不是采用所有可能的方法。我知道我可以使用ArrayList,但是我很想了解使用大量内容而不是少量内容时所采取的选择。

谢谢,

西蒙

Hei*_*bug 4

我认为最干净的方法是定义一个自定义ComboBoxModel

通过这种方式,您可以为组合框定义数据模型,将创建组合框的部分与数据管理本身分开。

使用文本文件可能是一件好事,因为插入新条目时不必修改代码。您可以在 ComboBoxModel 构造函数中定义读取文件过程。这样,每次运行该程序时,您都会发现更新的组合框内容。

如果应用程序本身无法更新内容,则 ArrayList 不是一个好的选择。如果您对数组列表的内容进行硬编码,则每次需要添加新条目时都将被迫修改代码。

一个小例子:

class YourModel implements ComboBoxModel{

//implements all interface methods required...
@override
public YourModel(String filename)
{
    comboBoxItemList = new ArrayList<String>();
    // open your file
    // add every entry to the the list
}
@override
public Object getElementAt(int index)
{
    return comboBoxItemList.get(index);
}
List<String> comboBoxItemList;
}
Run Code Online (Sandbox Code Playgroud)

一旦编写了您需要的内容,您将不再修改代码。您也可以对多个不同的 JComboBox 使用相同的模型。

YourModel model = new YourModel("path_to_a_file");
JComboBox box1 = new JComboBox();
box1.setModel(model);
JComboBox box2 = new JComboBox();
box2.setModel(model);
Run Code Online (Sandbox Code Playgroud)