2012-10-08 48 views
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); 
      } 
     });   
    } 
} 
+0

*“我试图多次显示窗体”* ***为什么?***此尝试提供哪些用户功能?另外,请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/a/9554657/418556) –

+0

@AndrewThompson必须显示相同的表单细节 - 需求类似于。这些值也必须发送到数据库。填好表格后,再次显示相同的表格,直到时间变​​为0.一些科学相关的数据必须以 – AGEM

+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); 
      } 
     });   
    } 
} 
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(或者你不会看到任何可见的变化)

相关问题