多次显示相同的形式

时间:2012-10-08 15:20:00

标签: java swing

我试图在这个例子中多次展示这个形式10次,有人可以帮我做这个吗?

在下面的示例中,我只显示按钮以保持简单,以及按钮我将添加其他组件,如文本框等...,在下面的示例中,我得到错误 - 时间应该是最终的。如果我把它作为最终,那么我将无法写出times = times - 1。

private void showForm(int times){

    if(times >= 1){
      JButton btn = new JButton("ADD");  
      container.add(btn);
      times = times - 1;

      btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showForm(times);
            }
        });          
    }
}

2 个答案:

答案 0 :(得分:3)

就这样写:

private void showForm(final int times){

    if(times >= 1){
      JButton btn = new JButton("ADD");  
      container.add(btn);

      btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showForm(times - 1);
            }
        });          
    }
}

答案 1 :(得分:3)

如果按下按钮你想要出现新按钮,每次减去1(这是我所理解的),要真正使它工作,你还需要添加revalidate()和一个循环

private void showForm(final int times) {
    if (times >= 1) {
        for (int i=0; i<times; i++) {
            JButton btn = new JButton("ADD");  
            container.add(btn);
            container.revalidate();
            btn.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    showForm(times-1);
                }
            });
        }
    }
}

否则忘记循环但保持revalidate(或者你不会看到任何明显的变化)