2012-07-09 21 views
2

我已經提到這個I want to add a JLabel and Text box dynamically by clicking add button動態創建我的JTextField動態創建JTextField後,如何使用getText()?

但是,如何使用getText()來分別檢索每個文本字段的文本?

public class CreateGuestForm2 { 

private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="111,10" 
private JPanel jContentPane = null; 
private int indexer = 1; // @jve:decl-index=0: 
private List<JLabel> listOfLabels = new ArrayList<JLabel>(); // @jve:decl-index=0: 
private List<JTextField> listOfTextFields = new ArrayList<JTextField>(); // @jve:decl-index=0: 
private JButton jButtonAdd = null; 
private JPanel jPanel = null; 
private GridBagConstraints textFieldConstraints = new GridBagConstraints(); // @jve:decl-index=0: 
private GridBagConstraints labelConstraints = new GridBagConstraints();// @jve:decl-index=0: 
private JButton jButtonCreate = null; 
private JButton jButtonHelp = null; 
String textFields = null; 



/** 
* This method initializes jFrame 
* 
* @return javax.swing.JFrame 
*/ 
private JFrame getJFrame() { 
    if (jFrame == null) { 
     jFrame = new JFrame(); 
     jFrame.setLayout(new GridBagLayout()); 
     jFrame.setPreferredSize(new Dimension(800, 600)); 
     jFrame.setTitle("Create Guest Form"); 
     jFrame.setSize(new Dimension(800, 582)); 
     jFrame.setContentPane(getJContentPane()); 
     jFrame.pack(); 
     jFrame.setVisible(true); 
    } 
    return jFrame; 
} 


/** 
* This method initializes jContentPane 
* 
* @return javax.swing.JPanel 
*/ 
private JPanel getJContentPane() { 
    if (jContentPane == null) { 
     jContentPane = new JPanel(); 
     jContentPane.setLayout(null); 
     jContentPane.add(getJButtonAdd(), null); 
     jContentPane.add(getJPanel(), null); 
     jContentPane.add(getJButtonCreate(), null); 
     jContentPane.add(getJButtonHelp(), null); 
     jContentPane.add(getJPanel(), null); 
     jContentPane.add(getJPanel(), null); 
    } 
    return jContentPane; 
} 


/** 
* This method initializes jButtonAdd 
* 
* @return javax.swing.JButton 
*/ 
private JButton getJButtonAdd() { 
    if (jButtonAdd == null) { 
     jButtonAdd = new JButton(); 
     jButtonAdd.setText("Add a guest"); 
     jButtonAdd.setBounds(new Rectangle(14, 45, 111, 24)); 
     jButtonAdd.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent e) { 
       System.out.println("actionPerformed()"); 
       addGuest(e); 
      } 
     }); 
    } 
    return jButtonAdd; 
} 

public void addGuest(ActionEvent e){ 
    // Clear panel 
    jPanel.removeAll(); 

    // Create label and text field 
    JTextField jTextField = new JTextField(); 
    textFields = jTextField.getText(); 
    jTextField.setSize(100, 200); 
    listOfTextFields.add(jTextField); 
    listOfLabels.add(new JLabel("Guest " + indexer)); 

    // Add labels and text fields 
    for(int i = 0; i < indexer; i++) 
    { 
     // Text field constraints 
     textFieldConstraints.gridx = 1; 
     textFieldConstraints.fill = GridBagConstraints.HORIZONTAL; 
     textFieldConstraints.weightx = 0.5; 
     textFieldConstraints.insets = new Insets(10, 10, 10, 10); 
     textFieldConstraints.gridy = i; 

     // Label constraints 
     labelConstraints.gridx = 0; 
     labelConstraints.gridy = i; 
     labelConstraints.insets = new Insets(10, 10, 10, 10); 

     // Add them to panel 
     jPanel.add(listOfLabels.get(i), labelConstraints); 
     jPanel.add(listOfTextFields.get(i), textFieldConstraints); 


    } 

    // Align components top-to-bottom 
    GridBagConstraints c = new GridBagConstraints(); 
    c.gridx = 0; 
    c.gridy = indexer; 
    c.weighty = 1; 
    jPanel.add(new JLabel(), c); 
    indexer++; 
    jPanel.updateUI(); 
} 
/** 
* This method initializes jPanel 
* 
* @return javax.swing.JPanel 
*/ 
private JPanel getJPanel() { 
    if (jPanel == null) { 
     jPanel = new JPanel(); 
     jPanel.setLayout(new GridBagLayout()); 
     jPanel.setPreferredSize(new Dimension(600,600)); 
     jPanel.setBounds(new Rectangle(14, 76, 759, 413)); 
     jPanel.setBorder(LineBorder.createBlackLineBorder()); 


    } 
    return jPanel; 
} 

/** 
* This method initializes jButtonCreate  
* 
* @return javax.swing.JButton 
*/ 
private JButton getJButtonCreate() { 
    if (jButtonCreate == null) { 
     jButtonCreate = new JButton(); 
     jButtonCreate.setText("Create"); 
     jButtonCreate.setBounds(new Rectangle(681, 505, 93, 27)); 
     jButtonCreate.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent e) { 
       System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed() 
       createGuest(e); 
      } 
     }); 
    } 
    return jButtonCreate; 
} 

public void createGuest(ActionEvent e){ 
    String record = textFields; 
    GuestControl gCreate = new GuestControl(); 
    if(gCreate.processCreateGuest2(record)){ 
     JOptionPane.showMessageDialog(null, "Guest record created successfully"); 
     getJFrame().dispose(); 
    } 
    else 
    { 
      JOptionPane.showMessageDialog(null, "Guest not created, please try again"); 

    } 

} 
} 

PS:我是在創造一個客人形式

回答

1

listOfTextFields.get(i).getText()應該努力這樣做了學校的項目。

+0

.getText()在我的for循環,如何我從jButtonCreate – Raynoro 2012-07-09 06:49:03

+0

得到的信息,我不知道我理解你的問題。但基本上,如果你想傳遞任何信息,你可以傳遞信息作爲方法參數,或者你可以把它作爲一個字段在課堂上。 – 2012-07-09 07:44:07

3

試試這個....

當你創建一個JTextField動態地給它一個名稱,它像一個id。使用這個名字,你可以參考它...

for (int i=0 ; i<10 ; i++){ 

    newButton.setName(String.valueOf(i)); 

} 

編輯:

nbutt.putClientProperty("id", Integer.valueOf(i)); 

現在來從proerty映射值。

Object mProperty = nbutt.getClientProperty("id"); 

    if (mProperty instanceof Integer) { 

     int i = ((Integer)mProperty); 

    } 
使用listOfTextFields.get(I)後
+0

我試過了,但沒有奏效。 – Raynoro 2012-07-09 13:01:19

+0

立即嘗試編輯部分 – 2012-07-09 15:23:48

+0

我設法做到了! 非常感謝! – Raynoro 2012-07-10 06:01:15