如何使用同一面板更新面板?

时间:2016-05-24 21:06:32

标签: java swing updatepanel panel

我会多次更换同一个面板,但不知道该怎么做。 我创建了一个类“Grafico”,它有一个构造函数,用我在代码中计算的更多参数进行初始化。为简单起见,我将省略这些参数。 “box”是一个JComboBox,根据所选项目激活并创建这些面板 例如:

JPanel middle = new JPanel(new BorderLayout());
Grafico graph1 = new Grafico(.......);
JPanel conf1 = new JPanel();

middle.add(graph1, BorderLayout.CENTER);
middle.add(conf1, BorderLayou.EAST);
frame.getContentPane().add(middle);

box.addItemListener(new ItemListener() {

                    @Override
                    public void itemStateChanged(ItemEvent e) {

.........//I do something..I create a new object of type "Grafico" with new parameters........................

Grafico graph2 = new Grafico(.......);
middle.remove(graph1);

                            middle.add(graph2, BorderLayout.CENTER);

                            frame.getContentPane().add(middle);
                            frame.getContentPane().revalidate();
                            frame.getContentPane().repaint();


}
});

这是有效的,但是第二次点击JComboBox中的一个对象我希望它每次都会更新我的graph2,而不是每次点击都创建一个新的,但它没有!

1 个答案:

答案 0 :(得分:2)

您必须调用repaint()和revalidate()才能刷新Panel。

Java Swing revalidate() vs repaint()