Utilisation de JCombobox imbriquées en java

Résolu/Fermé
lilioceane78 Messages postés 2 Date d'inscription samedi 6 août 2011 Statut Membre Dernière intervention 7 août 2011 - 6 août 2011 à 15:31
lilioceane78 Messages postés 2 Date d'inscription samedi 6 août 2011 Statut Membre Dernière intervention 7 août 2011 - 7 août 2011 à 10:19
Bonjour,

Je suis débutante en java et j'ai développé une programme en swing.
mon programme imbrique plusieurs combobox. Le résultat du premier combo détermine le suivant, celui du deuxième le troisième et ainsi de suite ... Le tout est lié à une base MySQL.
Seulement voilà, lors de l'affichage, les fenêtres restent toutes, alors que je souhaite que seule la dernière soit affichée pour faire les sélections, tout en ayant l'affichage des sélections précédentes.
J'ai essayé remove ca fonctionne pas.

Merci pour votre aide

Lili
Voilà mon code pour une classe
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Vector;
import javax.swing.*;

public class ComboSelectb extends JFrame {
	protected static Connection connectionb;
	protected static Statement statementb;
	protected static ResultSet resultsetb;
	protected static   Vector vectt = new Vector(5);
	protected static  String baseb;
	protected static  String base;
	protected  String tableb;
	protected static  Container c;
	static DefaultComboBoxModel comboModel;
	protected static JComboBox combob;
	protected String databaseUser = PanneauSaisie.saisieLogin.getText();
	protected String databasePassword = PanneauSaisie.saisiePassword.getText();
	protected static  String baseUrlb;
	protected static  JPanel jp = new JPanel();
	public static JComboBox combot;
	public ComboSelectb() {
		initialize();
	}
	private void initialize() {
		c = getContentPane();
		comboModel = new DefaultComboBoxModel();
		int ib = 0;
		comboModel.addElement("S?©lection de la base");
		while (ib < LanceAppli.vectb.size() )
		{
			comboModel.addElement(LanceAppli.vectb.elementAt(ib));
			ib++;
		}
		combob = new JComboBox(comboModel);
		combob.addActionListener(new ActionListener() {
			/** Création de la liste des bases du poste de travail
			 * préparation de la liste des tables
			 */
			public void actionPerformed(ActionEvent e) {
				baseb = ((String)combob.getSelectedItem());
				base =baseb ;
				baseUrlb = "jdbc:mysql://" + "localhost:3306" + "/" + baseb + "?user=" + LanceAppli.databaseUser + "&password="+ LanceAppli.databasePassword; 
				try {
					connectionb = DriverManager.getConnection(baseUrlb);
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
				try {
					statementb = connectionb.createStatement();
				} catch (SQLException e1) {
					e1.printStackTrace();
				}

				try {
					resultsetb = statementb.executeQuery("SHOW TABLES");
				} catch (SQLException e1) {
					e1.printStackTrace();
				}

/******************  liste des bases disponibles *****************************/
				try {
					while (resultsetb.next()  ) 
					{
						tableb = resultsetb.getString(1); // liste des tables disponibles
						vectt.addElement(tableb) ;
					}
				} catch (SQLException e1) {
					e1.printStackTrace();
				}

				/******************  liste des table disponibles *************/
				ComboSelectt selectt = new ComboSelectt();
				selectt.pack();
				selectt.setVisible(true);			

			}
		});
		setTitle ("titre");
		setLocation(400,200); 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		jp.setPreferredSize(new Dimension(500, 500));
		jp.setLayout(new GridLayout(15, 1)) ;	
		jp.add(combob);
	 c.add(jp);
	}
}

A voir également:

1 réponse

lilioceane78 Messages postés 2 Date d'inscription samedi 6 août 2011 Statut Membre Dernière intervention 7 août 2011
7 août 2011 à 10:19
Bonjour

merci pour la réponse

j'ai trouvé

la solution est de mettre un set.visible(false) juste après l'action performed

Lili
0