Bonjour,
Je me suis mis depuis peu à Java et j'ai des lacunes plus ou moins importantes.
Le soucis est que j'arrive pas à récupérer des variables assigné dans une frame et utile pour la frame suivante.
Si j'ai bien compris, il faut utiliser l'ascenseur set. C'est bien ce que j'ai fait et pourtant mes variables restent vide une fois dans la seconde frame alors que dans la 1ère elles sont bien remplies.
Voici le code de la 1ère frame où les variables prennent bien les valeurs :
public class JDBCDial extends JDialog implements ActionListener
{
private JLabel jl1,jl2,jl3,jl4,jl5;
private JTextField jtf1,jtf2,jtf3;
private JPasswordField jpf;
private JTextArea jta;
private JButton jb;
private JTable table;
/* Méthode constructeur de la fenêtre de type JDialog :
*/
JDBCDial()
{
super();
this.setTitle("Connexion SQL");
this.setSize(180,300);
this.setLocation(new Point(500,350));
this.setAlwaysOnTop(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
this.setLayout(new FlowLayout());
jl1=new JLabel("connexion au serveur : ");
jtf1=new JTextField("localhost",10);
jl2=new JLabel("database :");
jtf2=new JTextField(10);
jl3=new JLabel("username : ");
jtf3=new JTextField("root",10);
jl4=new JLabel("password : ");
jpf=new JPasswordField(10);
jb=new JButton("Connexion");
jb.addActionListener(this);
JScrollPane jscrollpane=new JScrollPane(table);
this.add(jl1);
this.add(jtf1);
this.add(jl2);
this.add(jtf2);
this.add(jl3);
this.add(jtf3);
this.add(jl4);
this.add(jpf);
this.add(jb);
}
/* Méthode de gestion de l'évènement de clic sur le bouton "Connexion"
* On récupère le contenu de tous les JTextField et de la JTextArea
* que l'on passe en paramètres aux méthodes setId
*/
public void actionPerformed(ActionEvent e)
{
String s1=jtf1.getText();
String s2=jtf2.getText();
String s3=jtf3.getText();
char[] pwd=jpf.getPassword();
String s4=String.copyValueOf(pwd);
this.dispose();
Test mf=new Test();
mf.setID(s1,s2,s3,s4);
}
}// Fin de classe
Et voici la seconde frame qui devrait récupèrer s1, s2, s3 et s4 :
public class Test {
public String url;
private String user;
private String pwd;
Connection sqlConnection;
Test() {
// Préparation d'une JFrame'
JFrame frame = new JFrame("MySql");
frame.setSize(600,350);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationRelativeTo(SwingUtilities.getRoot(frame));
JDesktopPane desktop = new JDesktopPane();
frame.add(desktop);
createSqlConnection("root","",url,"com.mysql.jdbc.Driver");
try {
//Fenetre d'interrogation SQL
InterrogationSQL interr = new InterrogationSQL(sqlConnection.createStatement());
desktop.add(interr);
} catch (SQLException ex) {
ex.printStackTrace();
}
frame.setVisible(true);
}
/**
* @return Si la sqlConnection est bien établie.
*/
public boolean createSqlConnection(String user, String password, String host, String drivers){
boolean success = false;
try {
Class.forName(drivers).newInstance();
success = true;
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
try {
sqlConnection = DriverManager.getConnection(host,
user,
password);
} catch (SQLException ex) {
ex.printStackTrace();
success = false;
}
return success;
}
void setID(String s1,String s2,String s3,String s4)
/* Recup des variable de la frame précédente */
{
this.url=("jdbc:mysql://"+s1+"/"+s2);
this.user=s3;
this.pwd=s4;
}
}
Afficher la suite