Bonjour a tous ,
S'il vous plait j'ai un petit problème.j'ai un ensemble des textfields crées dynamiquement a l'aide d'un bouton ajouter et je veux ajouter un bouton "retirer" pour supprimer un ou plusieurs éléments selectionnés.j'ai essayé d'utiliser la methode remove mais je n'arrive pas a trouver le résultat souhaité.
voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
buttonAdd.addActionListener(e-> addButtons(mainPanel, (Integer)spinner.getValue()));
        buttondelete.addActionListener(new ActionListener(){
 
 
		@Override
		public void actionPerformed(ActionEvent arg0) {
			//int size = textFields.size();
			//textFields.remove(size);
			// TODO Auto-generated method stub
			int x= (Integer)spinner.getValue();
			    for(int i=textFields.size()-x; i>=textFields.size(); i++)
 
			    mainPanel.remove(i);
			System.out.println(textFields.size());
		}
        });
	}
 
	private void addButtons(JPanel panel, int number) {
		if ( number>0 ) {
			int count = panel.getComponentCount()/2; // on compte le nombre de composants déjà ajoutés
 
			GridBagConstraints gbc = new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(2,4,2,4), 0, 0);
			for(int i=0; i<number; i++) {
 
				JLabel label = new JLabel(getLabelText(count+i)); // une étiquette pour le champ
				gbc.gridx = 0;
				gbc.weightx = 0; 
				gbc.fill = GridBagConstraints.NONE;
				panel.add(label, gbc);
 
               JTextField textField = new JTextField("parameter");  // le champ
               textField.setPreferredSize( new Dimension( 500, 24 ) );
				textFields.add(textField);
				JButton btn = new JButton("help");
				JPanel pane= new JPanel();
				pane.add(textField);
				pane.add(btn);
				gbc.gridx = 1;
				gbc.weightx = 1; 
				gbc.fill = GridBagConstraints.HORIZONTAL;
				panel.add(pane, gbc);
 
 
 
			}
			// on a modifié l'UI alors qu'elle était déjà affichée : on revalide (pour le layout) et on repeint (pour l'affichage)
			panel.revalidate();
			panel.repaint();
		}
 
	}