Probleme JTabbedPane!!

cs_kerem Messages postés 3 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 20 juillet 2004 - 20 juil. 2004 à 11:15
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 - 20 juil. 2004 à 17:42
Alors voila, j'ai un JTabbedPane avec plusieurs onglets ayant chacun la meme interface (un TextField et un bouton) créer comme cela:

String tabs[] = {"One", "Two", "Three", "Four"};
for (int i=0;i<tabs.length;i++) {
tabbedPane.addTab(tabs[i], createPane());
}

les TextField et les boutons sont créés dans la methode createPane().

Le probleme est que lorsque je clique sur le bouton je dois récuperer le contenu du TextField correspondant au panel dans lequel je suis, or je récupere toujours le contenu du dernier textField créer (ici celui de l'onglet "Four").

En fait je n'arrive pas a différencier les TextField qui ont été créer avec le meme nom.

Si quelqu'un a une idée, ca serai cool...
Merci!!

6 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
20 juil. 2004 à 11:29
Je pense que d'avantage de détails seraient les bienvenus,le code de ta méthode createPane(), par exemple.

Il faut que dans cette méthode, tu assigne un listener au bouton dans lequel tu fais un getText() de ton JTextField.

C'est une idée, mais si tu le fais déja,ce sera plus simple de t'aider avec le contenu de la méthode.

A bon entendeur ...
0
cs_kerem Messages postés 3 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 20 juillet 2004
20 juil. 2004 à 13:04
Oui ca je le fais déja, tien je met tout l'code

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class TabbedPaneExample
{
private JTabbedPane tabbedPane;
private JPanel panel1;
private JButton bouton;
private JFrame frame;
private JTextField field;
private int index;
private int temp= 0;
private String maString;
private String s1;


public TabbedPaneExample()
{
frame = new JFrame("Tabbed Pane Application");
frame.setSize( 300, 150 );

UIManager.put("TabbedPane.selected", Color.blue);

JPanel topPanel = new JPanel();
topPanel.setBackground(Color.blue);
topPanel.setLayout( new BorderLayout() );
frame.getContentPane().add( topPanel );

tabbedPane = new JTabbedPane();
tabbedPane.setBackground(Color.blue);
tabbedPane.setForeground(Color.red);

tabbedPane.setFont(new Font( "arial", Font.PLAIN, 12));

String tabs[] = {"One", "Two", "Three", "Four"};
for (int i=0;i<tabs.length;i++) {
tabbedPane.addTab(tabs[i], createPane());
}

maString = new String(tabbedPane.getTitleAt(0));
tabbedPane.setTitleAt(0,"<html> "+maString+" </html>");

tabbedPane.addChangeListener(
new ChangeListener() {
public void stateChanged(ChangeEvent e) {
tabbedPane.setTitleAt(temp,maString);
index = tabbedPane.getSelectedIndex();
maString = new String(tabbedPane.getTitleAt(index));
temp=index;
tabbedPane.setTitleAt(index,"<html> "+maString+" </html>");
}
});

topPanel.add( tabbedPane, BorderLayout.CENTER );
frame.setVisible(true);
}

JPanel createPane()
{
panel1 = new JPanel();
panel1.setBackground(Color.blue);

panel1.setLayout( null );

JLabel label1 = new JLabel( "Username:" );
label1.setBounds( 10, 15, 150, 20 );
panel1.add( label1 );

field = new JTextField();
field.setBounds( 10, 35, 150, 20 );
panel1.add( field );

JButton bouton = new JButton("click");
bouton.setBounds( 180, 35, 70, 20 );

bouton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(field.getText());
}
});

panel1.add( bouton );

return panel1;
}


public static void main( String args[] )
{
new TabbedPaneExample();
}
}
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
20 juil. 2004 à 14:05
Slut,
il existe une méthode qui permet de récupérer le contenu d'une page particuliére d'un JTabbedPane

A vue de nez, ça donnerait :

JPanel tempo = tabbedPane.getComponentAt(tabbedPane.getSelectedIndex)

JTextField filed = (JTextField )tempo.getComponent(2);

...


Enfin, un truc de ce style

Voilà, en espérant que c'est ça
0
toffe12 Messages postés 53 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 23 septembre 2005 1
20 juil. 2004 à 16:51
le probleme vient de tes variables globales


private JTextField field;


dans la methode createPane tu ecrases ta valeur field par le dernier objet cree

field = new JTextField();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_kerem Messages postés 3 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 20 juillet 2004
20 juil. 2004 à 17:27
Oui je sais que j'écrasais le TextField par le dernier créer mais je voulais trouver un moyen pour pouvoir revenir dessus et indiana_jules a vu juste!! Merci a toi!!

les lignes exactes sont celles-ci pour si quelqu'un a le meme probleme

Component tempo = tabbedPane.getComponentAt(tabbedPane.getSelectedIndex());
field = (JTextField )tempo.getComponentAt(10,35);

10,35 correspond a l'emplacement du TextField dans l'panel

Voila, et encore merci
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
20 juil. 2004 à 17:42
C'est mieux par les coordonnées ? Bon ben je saurais bon l'avenir :)
0
Rejoignez-nous