Bonjour a vous ,
Je suis un débutant en developpement Java , je vien de developpez une interface graphique qui servira par la suite a connecter vers des SGBD differents ..ceci dis c n'est pas le probleme.
voila comment j ai procédé et ca "marche" j ai creer une classe main qui extends une JFrame ,
dans le constructuteur une initComponent permet de creer le Jpanel d'ecceuil et dy mettre les composant .
ensuite pour passer a un autre Panel j ai ecrit des fonction Mysql_window() qui creer un autre Panel avec d'autres composants et met setContentPan(nouvo panel) pour l afficher .
Le problem c est que lorsque je passe du panel 2 vers le panel 3 en cliquant sur le boutton connecte( qui appel la contion Mysql_connection()) ca plante jusqu'a ce que je clique sur le bord de l'interface ou je le resize , et ca 'affiche le nouveau panel !!
je ne comprend pas d'ou vien le problem .. pourriez vous m'éclairer ?
voila mon code ! dslé si il est un peu long:
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class main extends JFrame{
JPanel pan;
main()
{ setPreferredSize(new Dimension(650,450));
initComponent();
}
//==========================fonction d'initialisation=================================
void initComponent()
{
JLabel l= new JLabel("Veuillez choisir le type de base de données:");
pan = new JPanel();
JRadioButton Mysql = new JRadioButton("Mysql",true);
Mysql.setActionCommand("Mysql");
JRadioButton Sqlserver = new JRadioButton("Sqlserver");
Sqlserver.setActionCommand("Sqlserver");
JRadioButton Access = new JRadioButton("Access");
Access.setActionCommand("Access");
//==============================================================================
JButton Ok = new JButton("Ok");
JButton cancel = new JButton("cancel");
final ButtonGroup group = new ButtonGroup();
//=================groupage des bouttons radio ==================
group.add(Mysql);
group.add(Sqlserver);
group.add(Access);
//===============================================================
setLayout(null);
setLocation(300, 200);
//====================ajout boutton sur pane ====================
pan.add(l);
pan.add(Mysql);
pan.add(Sqlserver);
pan.add(Access);
pan.add(Ok);
pan.add(cancel);
//====================positionnement=============================
setContentPane(pan);
pan.setLayout(null);
l.setBounds(10, 10, 400,20);
Sqlserver.setBounds(50,50, 150, 30);
Mysql.setBounds(50,100, 150, 30);
Access.setBounds(50,150, 150, 30);
Ok.setBounds(50,200,80,20);
cancel.setBounds(130,200,80,20);
pan.setVisible(true);
//====================action boutton Ok==========================
Ok.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
String choix= group.getSelection().getActionCommand();
if (choix == "Mysql")
{
Mysql_window();
}
else {
if (choix== "Sqlserver")
{
Sqlserver_window();
}
else
{
Access_window();
}
}
pack();
}});
//====================action boutton cancel=================================
cancel.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
System.exit(-1);
}
});
//==========================================================================
setVisible(true);
pack();
}
//==================================================================================
void Mysql_window()
{
JLabel l1=new JLabel("Veuillez entrer les informations de connexion:");
JPanel p2= new JPanel();
JButton connect = new JButton("connecter");
JButton cancel = new JButton("Annuler");
JTextField Nom_base = new JTextField();
JTextField User_n = new JTextField();
JTextField pwd = new JTextField();
JTextField server = new JTextField();
JLabel name_bd = new JLabel("nom de la base");
JLabel usr_name = new JLabel("Nom user :");
JLabel psswd = new JLabel("pwd :");
JLabel server_bd = new JLabel("serveur :");
p2.setLayout(null);
//=============================ajout elements au panel===========================
p2.add(name_bd);
p2.add(usr_name);
p2.add(psswd);
p2.add(server_bd);
p2.add(l1);
p2.add(Nom_base);
p2.add(User_n);
p2.add(pwd);
p2.add(server);
p2.add(connect);
p2.add(cancel);
//==================Labels=======================================================
l1.setBounds(10, 10, 400,20);
name_bd.setBounds(50,50,100, 20);
usr_name.setBounds(50,100,100, 20);
psswd.setBounds(50,150,100, 20);
server_bd.setBounds(50,200,100,20);
//==================Textfields==================================================
Nom_base.setBounds(150,50,150,20);
User_n.setBounds(150,100,150,20);
pwd.setBounds(150,150,150,20);
server.setBounds(150,200,150,20);
connect.setBounds(50,250,100,20);
cancel.setBounds(150,250,100,20);
//==============================================================================
pan.setVisible(false);
setContentPane(p2);
p2.setVisible(true);
//====================action boutton cancel=====================================
cancel.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
initComponent();
}
});
//====================action boutton connect====================================
connect.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
Mysql_connect();//routine connexion
}});
}
//==============================================================================
void Sqlserver_window()
{
JLabel l2=new JLabel("Veuillez entrer les informations de connexion:");
JPanel p3 = new JPanel();
JButton connect = new JButton("connecter");
JButton cancel = new JButton("Annuler");
JTextField Nom_base = new JTextField();
JTextField User_n = new JTextField();
JTextField pwd = new JTextField();
JTextField server = new JTextField();
JTextField port_ser = new JTextField();
JLabel name_bd = new JLabel("nom de la base");
JLabel usr_name = new JLabel("Nom user :");
JLabel psswd = new JLabel("pwd :");
JLabel server_bd = new JLabel("serveur :");
JLabel port = new JLabel("Port du serveur");
p3.setLayout(null);
//======================ajout des element sur panel=================================
p3.add(l2);
p3.add(name_bd);
p3.add(usr_name);
p3.add(psswd);
p3.add(server_bd);
p3.add(port);
p3.add(Nom_base);
p3.add(User_n);
p3.add(pwd);
p3.add(server);
p3.add(port_ser);
p3.add(connect);
p3.add(cancel);
//==================Labels==========================================================
l2.setBounds(10, 10, 400,20);
name_bd.setBounds(50,50,100, 20);
usr_name.setBounds(50,100,100, 20);
psswd.setBounds(50,150,100, 20);
server_bd.setBounds(50,200,100,20);
port.setBounds(50,250,100,20);
//==================Textfields======================================================
Nom_base.setBounds(150,50,150,20);
User_n.setBounds(150,100,150,20);
pwd.setBounds(150,150,150,20);
server.setBounds(150,200,150,20);
port_ser.setBounds(150,250,150,20);
connect.setBounds(50,270,100,20);
cancel.setBounds(150,270,100,20);
//==================================================================================
pan.setVisible(false);
setContentPane(p3);
p3.setVisible(true);
//=============================action boutton cancel====================================
cancel.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
initComponent();
}
});
//==============================action boutton connect===================================
connect.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
Mysql_connect();//routine connexion
}});
}
//=======================================================================================
void Access_window(){
JLabel l3=new JLabel("Veuillez entrer les informations de connexion:");
JPanel p4 = new JPanel();
JButton connect = new JButton("connecter");
JButton cancel = new JButton("Annuler");
JTextField Nom_pont = new JTextField();
JTextField User_n = new JTextField();
JTextField pwd = new JTextField();
JLabel name_pt = new JLabel("nom du pont ODBC");
JLabel usr_name = new JLabel("Identifiant :");
JLabel psswd = new JLabel("pwd :");
p4.setLayout(null);
//=============================ajout d'elements sur panel==================================
p4.add(l3);
p4.add(name_pt);
p4.add(usr_name);
p4.add(psswd);
p4.add(Nom_pont);
p4.add(User_n);
p4.add(pwd);
p4.add(connect);
p4.add(cancel);
//==================Labels=================================================================
l3.setBounds(10, 10, 400,20);
name_pt.setBounds(50,50,200,20);
usr_name.setBounds(50,100,200,20);
psswd.setBounds(50,150,200,20);
//==================Textfields=============================================================
Nom_pont.setBounds(170,50,150,20);
User_n.setBounds(170,100,150,20);
pwd.setBounds(170,150,150,20);
//========================================================================================
connect.setBounds(50,200,100,20);
cancel.setBounds(150,200,100,20);
//========================================================================================
pan.setVisible(false);
setContentPane(p4);
p4.setVisible(true);
//==============================action boutton cancel======================================
cancel.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
initComponent();
}
});
//==============================action boutton cancel======================================
connect.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
Mysql_connect();
}});
}
//========================================================================================
void Mysql_connect()
{
final JTextField f1 ;
final JTextField f2 ;
JLabel connection_state=new JLabel("statue de connxion a la base de données");
JLabel message = new JLabel("Veuillez entrer le noms des tables / vue :");
JPanel p5= new JPanel();
JButton Ok = new JButton("Ok");
JButton cancel = new JButton("Annuler");
final JCheckBox Table= new JCheckBox("table");
final JCheckBox vue= new JCheckBox("vue");
f1 =new JTextField();
f2 =new JTextField();
//========================================================================================
p5.setLayout(null);
//=============================ajout elements au panel====================================
p5.add(Table);
p5.add(f1);
p5.add(f2);
p5.add(vue);
p5.add(Ok);
p5.add(cancel);
p5.add(message);
p5.add(connection_state);
//==================Labels=======================================================
connection_state.setBounds(10, 10, 400,20);
message.setBounds(10, 30, 400,20);
Table.setBounds(50,100,100, 20);
f1.setBounds(50,150,200,20);
f1.setVisible(false);
f2.setBounds(350,150,200,20);
f2.setVisible(false);
vue.setBounds(350,100,100, 20);
//==================Textfields==================================================
Ok.setBounds(50,200,100,20);
cancel.setBounds(150,200,100,20);
//==============================================================================
pan.setVisible(false);
setContentPane(p5);
p5.setVisible(true);
//====================action boutton cancel===============================================
cancel.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
initComponent();
}
});
//====================action boutton connect==============================================
Ok.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
initComponent();//routine connexion
}});
Table.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
if (Table.isSelected())
{
f1.setVisible(true);
}
else f1.setVisible(false);
}});
vue.addMouseListener(new MouseAdapter(){
public void mouseClicked( MouseEvent e){
if (vue.isSelected())
{
f2.setVisible(true);
}
else f2.setVisible(false);
}});
}
//====================fonction selection table===========================================
//==============================fonction main=============================================
public static void main( String Args[])
{
main a=new main();
}
}
Partager