在java中的combobox上添加项目运行时

在java中的combobox上添加项目运行时,java,swing,user-controls,awt,jcombobox,Java,Swing,User Controls,Awt,Jcombobox,我在Swing中创建了一个组合框,我想在另一个函数中添加项目。但问题是,调用该函数后,项目不会显示: public void addItems() { combo.addItem(""); // i want to add items here when this function is being called // but those items are not displaying after calling this function // i m cal

我在Swing中创建了一个组合框,我想在另一个函数中添加项目。但问题是,调用该函数后,项目不会显示:

public void addItems()
{
    combo.addItem("");
    // i want to add items here when this function is being called
    // but those items are not displaying after calling this function
    // i m calling this function on button click
}
在以下方面对我有效:

在以下方面对我有效:


如果combobox具有
可变ComboboxModel
,则可以执行以下操作

MutableComboBoxModel model = (MutableComboBoxModel)combo.getModel();
model.addElement( elementToAdd );
这相当于调用
JComboBox#addItem
(参见下面的实现):


但是我认为,如果您想在模型端进行更改,而不是浏览视图(除了向用户提供在视图中编辑的能力),那么直接修改模型是一种最佳做法。

如果您的组合框具有
可变组合框模型
,则可以执行以下操作

MutableComboBoxModel model = (MutableComboBoxModel)combo.getModel();
model.addElement( elementToAdd );
这相当于调用
JComboBox#addItem
(参见下面的实现):

但我认为,如果您希望在模型端进行更改,而不是浏览视图(为用户提供在视图中编辑的功能除外),则直接修改模型是最佳做法。

您需要调用:

repaint();
validate();
您需要调用:

repaint();
validate();

不要将
项目
直接添加到
JComboBox
,将一个新的
项目
添加到
ComboxModel
我可以根据您的陈述想出至少3个问题。想选择并问1个问题吗?不要直接将
项目添加到
JComboBox
,将新的
项目添加到
ComboBoxModel
我可以根据您的陈述想出至少3个问题。是否愿意选择并问1个问题?不是,您错了(重新)验证和重新绘制是为了在运行时添加、删除(添加和删除)或修改JComponents,这些方法是为了LayoutManager,而不是为了在运行时向JComboBox添加新项,请删除或修改此问题不是,您错了(重新)验证和重新绘制是为了添加、删除(添加和删除)或在运行时修改JComponents,这些方法用于LayoutManager,而不是在运行时向JComboBox添加新项,请删除或修改此问题