一言以蔽之:在容器panel中动态添加组件后,需要用SwingUtilities.updateComponentTreeUI(容器)来刷新一下。
示例代码:
public class HPanel extends JPanel{ public HPanel() { super(); this.setBorder(new EmptyBorder(1,1,1,1));// 设置边界 this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));// 设置布局 } /** * 添加内部组件 * @param tokens */ public void addSubBoxes(List<Token> tokens) { this.removeAll();// 清除原有的内部组件 String tokenText=t.getText(); JTextField txt=new JTextField(tokenText); this.add(txt); SwingUtilities.updateComponentTreeUI(this);//添加或删除组件后,更新窗口 } }
END