0

この例では、フォームを何度も 10 回表示しようとしています。

以下の例では、シンプルにするためにボタンのみを表示しています。ボタンとともに、テキストボックスなどの他のコンポーネントを追加します...下の例では、エラー時間を取得しています。それを最後にすると、回=回-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);
            }
        });          
    }
}
4

2 に答える 2

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(そうしないと、目に見える変更が表示されません)

于 2012-10-08T15:40:51.130 に答える
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);
            }
        });          
    }
}
于 2012-10-08T15:25:11.577 に答える