在Java Swing中刷新JPanel

时间:2015-07-10 10:48:49

标签: java swing jpanel refresh

假设我有一个像这样的字符串列表

List<String> button_names={"Button1","Button2","Button3","Button4"};

我要在JPanel中插入带有这些文本的JButton,所以我做

for (int i=0; i<button_names.length; i++)
   myJPanel.add(new JButton(button_name[i]));

我的问题是......如果我的模型(在这种情况下,我的List button_names)因任何原因发生了变化,我如何刷新我的JPanel以显示更改? 我应该

myJPanel.removeAll()

再次插入我的JButtons()?谢谢你

1 个答案:

答案 0 :(得分:0)

是removeAll然后重新插入新按钮是最简单的,也是最好的方法。否则,您必须开始计算已删除的按钮,已添加的按钮以及列表中这些新按钮的位置。此外,列表中的按钮应该改变我猜的位置,所以你必须覆盖这种情况。

你可以编写一个这样的方法,你可以在初始创建中使用,以及当你想重新加载列表时

void addButtonsToPanel(JPanel p) {
  p.removeAll();
  for (int i=0; i<button_names.length; i++)
   myJPanel.add(new JButton(button_name[i]));
  validate();
  repaint();
}