2008-12-15 12 views
2

J'espère qu'il est correct de dire que les composants d'une interface graphique sont comme JButton, JPanel, JTextField, tout ce qui est bien.Java GUI Création de composants

Je souhaite créer un champ de texte qui accepte un nombre entier. Ensuite, un bouton de soumission peut être pressé et basé sur l'entier qui a été entré, créer autant de champs de texte dans une fenêtre contextuelle ou autre.

Je n'ai aucune idée, quelqu'un pourrait-il me lancer dans la bonne direction? Le problème que j'ai est que je n'ai aucune idée comment créer une boucle for pour créer les composants de l'interface graphique. Je veux dire si j'ai une boucle et faire quelque chose comme:

print("JTextField num1 = new JTextField()"); 

alors dans une boucle, il ne fera que créer 1 champ de texte quand je veux beaucoup. Comment créer des variables de JTextFields de manière générique?

Merci pour votre aide ...

Répondre

6

Utilisez un LayoutManager approprié (par exemple GridLayout) pour créer et ajouter vos champs de texte.

for (i = 0; i < numberOfTextFields; i++) { 
    JTextField textField = new JTextField(); 
    container.add(textField); 
    /* also store textField somewhere else. */ 
} 
+0

pour (int i = 0; .... << >> – Devoted

+0

Non, je suppose que j'ai été déclaré avant ...;) – Bombe

0

Je voudrais créer une liste pour stocker les champs de texte, et vous pouvez les récupérer par index. Ensuite, vous pouvez avoir autant de champs que nécessaire.

List fields = new ArrayList(); 

// Create as many elements as you need 
for (int i = 0; i < numberOfElements; i++){ 
    JTextField field = new JTextField(); 
    // Add the fields to some panel so they are shown in the screen. 
    // I assume that the component is called parent panel 
    parentPanel.add(field); 

    // Store the component in the list so you can retrieve it later 
    fields.add(field); 
} 

// ... 

// When you want to retrieve a particular one: 

JTextField field = (JTextField)fields.get(indexToRetrieve); 
1

Essayez quelque chose comme ceci:

List<JTextField> nums = new ArrayList<JTextField>(); 
JTextField tempField; 

for (int i = 0; i < 10; i++) { 
    tempField = new JTextField(); 
    jPanel1.add(tempField); // Assuming all JTextFields are on a JPanel 
    nums.add(tempField); 
} 

Ne pas oublier de mettre un gestionnaire de mise en page correcte pour le conteneur. (jPanel1 dans ce cas)