2012-10-08 44 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(或者你不會看到任何可見的變化)

相關問題