Bouton ajouter ligne, Swing, Pas en tableau

Résolu
EGP-Swyx Messages postés 6664 Date d'inscription   Statut Contributeur Dernière intervention   -  
EGP-Swyx Messages postés 6664 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   6
 
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   Statut Contributeur Dernière intervention   625
 
ah ouais pas mal! Je vais essayer =) d'adapter ça à mon code.

Merci !
0