Bonsoir !
Je souhaite créer une application assez "complexe" pour mon niveau.
Lors de l'ouverture du programme, je souhaite voir apparaitre un formulaire.
Selon les informations entrées, si erreur une boite de dialog d'erreur apparait, sinon, sur la même fenêtre, je fais apparaitre l'application [donc en gros ça revient à une sorte de login...]
Mon idée première était de créer une classe principale étendue de JFrame, et, selon la situation allouer une classe étendue du JPanel.
Par exemple : une classe étendue de JPanel qui correspond au formulaire, une fois le formulaire remplie, je le détruit et alloue une autre classe étendue de JPanel contenant la suite du programme.
Voilà ce que j'ai fait :
Et
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 public class GetInfoPanel extends JFrame { private JPanel myFenetre = new Graphics(); public GetInfoPanel() { WindowProperty(); this.setContentPane(myFenetre); Run(); } public void WindowProperty() { this.setTitle("Interface GUI"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(500, 500); this.setResizable(false); this.setLocationRelativeTo(null); } public void Run() { this.pack(); this.setVisible(true); } }
Problème, a partir de la classe principale (GetInfoPanel), je ne peux pas récupérer la variable b_connexion...
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 public class Graphics extends JPanel implements ActionListener{ private JPanel GridPanel = new JPanel(); private GridLayout myGrid = new GridLayout(6, 2, 5, 5); private JTextField E_driver = new JTextField(); private JTextField E_url = new JTextField(); private JTextField E_BName = new JTextField(); private JTextField E_UName = new JTextField(); private JPasswordField E_pwd = new JPasswordField(); private boolean b_connexion = false; public Graphics() { run(); } public void actionPerformed(ActionEvent getAct) { if (getAct.getActionCommand().equals("S_valid")) { System.out.println("Formulaire reçu"); System.out.println("Driver :" + E_driver.getText()); System.out.println("URL : " + E_url.getText()); System.out.println("BDD Name : " + E_BName.getText()); System.out.println("Identifiant : " + E_UName.getText()); if (E_driver.getText().equals("") || E_url.getText().equals("") || E_BName.getText().equals("") || E_UName.getText().equals("") || E_pwd.getPassword().equals("")) { System.out.println("Un des champs est vide..."); new CreateDialog("Un des champs est vide..."); } else { b_connexion = true; } } } public void run() { this.setLayout(new BorderLayout()); this.add(GridPanel, BorderLayout.CENTER); GridPanel.setLayout(myGrid); JButton S_valid = new JButton("Se connecter"); E_driver.setText("com.mysql.jdbc.Driver"); E_url.setText("sql1.free-h.org/freeh_geekthun"); GridPanel.add(new JLabel("Driver :")); GridPanel.add(E_driver); GridPanel.add(new JLabel("URL : ")); GridPanel.add(E_url); GridPanel.add(new JLabel("BDD Name : ")); GridPanel.add(E_BName); GridPanel.add(new JLabel("Identifiant : ")); GridPanel.add(E_UName); GridPanel.add(new JLabel("Mot de Passe :")); GridPanel.add(E_pwd); GridPanel.add(S_valid); S_valid.setActionCommand("S_valid"); S_valid.addActionListener(this); } }
Donc en fait, je pense avoir un gros problème de conception du programme, si vous pouviez me donner des pistes à rechercher, les classes que je devrais créer, l'ordre dans lequel les agencer...
Je vous remercie, bonne soirée
EDIT : Après réflexion, ne serait-il pas plus judicieux de faire le contraire ?
A savoir la classe de départ est la classe avec le formulaire, qui une fois validé, le supprimer et ouvre une nouvelle fenêtre avec la suite de l'application ?
Partager