Bouton ajouter ligne, Swing, Pas en tableau

Résolu/Fermé
EGP-Swyx Messages postés 6664 Date d'inscription dimanche 18 mars 2012 Statut Contributeur Dernière intervention 7 janvier 2019 - Modifié par EGP-Swyx le 3/06/2014 à 11:37
EGP-Swyx Messages postés 6664 Date d'inscription dimanche 18 mars 2012 Statut Contributeur Dernière intervention 7 janvier 2019 - 3 juin 2014 à 13:52
Bonjour,

je travaille actuellement sur une appli qui a une interface Swing.

mon interface fonctionne (à peu près) mais je dois ajouter un traitement complexe sur l'interface.

En simple. J'ai un Jlabel et un JTextField pour un Jbutton Ajouter ligne.

Lors de la pression de ce boutton normalement, celà ajoute un nouveau groupe JLabel et JTextField. et décale le bouton.

Avez vous une idée pour faire ça?
Cordialement, Swyx
(technicien de montage/maintenance hardware informatique)
A voir également:

1 réponse

ProvencaleLeGaulois Messages postés 48 Date d'inscription lundi 2 juin 2014 Statut Membre Dernière intervention 18 septembre 2014 6
3 juin 2014 à 12:55
Bonjour,

Moi j'aurai fait comme ça (rapidement, sans implémenter de MVC ^.^) :

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Swing { 
	
	static JFrame f = new JFrame();
	static Vector<JTextField> jtextields = new Vector<JTextField>();
	static Vector<JLabel> jlabels = new Vector<JLabel>();
	static JButton ajouter = new JButton("Ajouter");
	static JPanel panel;
	
	public static void main(String[] args) { 

		jtextields.add(new JTextField());
		jlabels.add(new JLabel("test : "));
		
		//ajout d'un listener sur le bouton qui ajoute une ligne
		ajouter.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				//ajout de la ligne
				jtextields.add(new JTextField());
				jlabels.add(new JLabel("test : "));
				refreshInterface();
			}
		});

		creerInterface();
	}

	private static void refreshInterface() {
		//on enlève le panel et on recrée l'interface
		f.remove(panel);
		creerInterface();
	}
	
	private static void creerInterface() {
		//on créé un panel avec un GridLayout dont le nombre de ligne vaut le nombre de textefields à afficher 
		//(+1 pour le bouton Ajouter)
		panel = new JPanel(new GridLayout(jtextields.size()+1,2));

		//ajout de tous les textfields et label
		for(int i=0; i<jtextields.size();i++){
			panel.add(jlabels.get(i));
			panel.add(jtextields.get(i));
		}

		//ajoute le bouton
		panel.add(ajouter);
		
		//ajoute le panel à la frame
		f.add(panel);
		
		f.setSize(500, 500);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	} 
	

} 


A+
0
EGP-Swyx Messages postés 6664 Date d'inscription dimanche 18 mars 2012 Statut Contributeur Dernière intervention 7 janvier 2019 625
Modifié par EGP-Swyx le 3/06/2014 à 13:52
ah ouais pas mal! Je vais essayer =) d'adapter ça à mon code.

Merci !
0