Java重新添加已从JComboBox中删除的项目

我想要做的是只要按下“删除”按钮,它就会删除我在JComboBox中选择的项目。所以一旦我删除所有的项目,我有另一个名为“重置”的按钮,其中所有已删除的项目将再次在JComboBox中,并且有可能有一个恢复方法,而不必重新添加每个模型,导致我的实际的程序有很多模型Java重新添加已从JComboBox中删除的项目

这是我所尝试过的,但它不工作任何建议如何做到这一点?

public class Testing{ 

JFrame frame;

JPanel panel;

JButton remove,reset;

JComboBox box;

final DefaultComboBoxModel items = new DefaultComboBoxModel(new String[]

{

"-","Database System","Computer Fundamentals",

"Computer Maths","Internet Web Tech","Tertiary English 1"

});

public void display()

{

frame = new JFrame();

panel = new JPanel();

box = new JComboBox();

box.setModel(items);

remove = new JButton("Remove");

reset = new JButton("Reset");

remove.addActionListener((ActionEvent e)->{

box.removeItem(box.getSelectedItem());

});

reset.addActionListener((ActionEvent e)->{

System.out.println("Reset");

box.setModel(items);

box.revalidate();

box.repaint();

});

panel.revalidate();

panel.repaint();

panel.add(box);

panel.add(remove);

panel.add(reset);

frame.add(panel);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300,300);

}

public static void main(String[] args)

{

TestingProgram te = new TestingProgram();

te.display();

}

}

回答:

我修好了。下面是新的代码:

public class Test{ 

JFrame frame;

JPanel panel;

JButton remove,reset;

JComboBox box;

final DefaultComboBoxModel items = new DefaultComboBoxModel(new String[]

{

"-","Database System","Computer Fundamentals",

"Computer Maths","Internet Web Tech","Tertiary English 1"

});

public DefaultComboBoxModel getClone(DefaultComboBoxModel items) {

DefaultComboBoxModel clone = new DefaultComboBoxModel();

for(int i = 0;i<items.getSize();i++) {

clone.addElement(items.getElementAt(i));

}

return clone;

}

public void display()

{

frame = new JFrame();

panel = new JPanel();

box = new JComboBox();

box.setModel(getClone(items));

remove = new JButton("Remove");

reset = new JButton("Reset");

remove.addActionListener((ActionEvent e)->{

box.removeItem(box.getSelectedItem());

});

reset.addActionListener((ActionEvent e)->{

box.setModel(getClone(items));

});

panel.revalidate();

panel.repaint();

panel.add(box);

panel.add(remove);

panel.add(reset);

frame.add(panel);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300,300);

}

public static void main(String[] args)

{

Test te = new Test();

te.display();

}

}

的问题是,你使用相同DefaultComboBoxModel,每次你从JComboBox删除了一个文件时,它实际上是从你的DefaultComboBoxModel项删除它。这意味着,当你重置模型时,你删除的东西也从你的DefaultComboBoxModel中删除,并且它什么也没做

这个新代码使你的DefaultComboBoxModel克隆,并补充说,所以当你删除东西从它,它不会影响final一个

以上是 Java重新添加已从JComboBox中删除的项目 的全部内容, 来源链接: utcz.com/qa/264023.html

回到顶部