Bonjour,
J'ai commencé à développer en Java en utilisant Swing et je suis un peu perdu (pour info je viens du C++ / Qt).
Ma première fenêtre est un panneau d'identification :
Le résultat est plutôt correct au départ mais ensuite ça se complique...
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.TitledBorder; public class LogWindow extends JFrame implements ActionListener, KeyListener { //private JPanel panelHaut, panelBas, panelGauche, panelDroite, panelCentre, panelConnexion; private JButton bConnect; private JButton bCancel; private JTextField tLogin; private JPasswordField tPassword; public LogWindow() { this.initObj(); this.setSize (new Dimension (600,400)); //this.setResizable (false); this.setTitle("Loggin Window"); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contener = this.getContentPane(); JPanel panelHaut = new JPanel(new GridLayout (1,1)); JPanel panelBas = new JPanel(new GridLayout (1,1)); JPanel panelGauche = new JPanel(new GridLayout (1,1)); JPanel panelDroite = new JPanel(new GridLayout (1,1)); JPanel panelCentre = new JPanel(new GridLayout (0,1)); JPanel panelConnexion = new JPanel(); contener.add(panelHaut, BorderLayout.NORTH); contener.add(panelBas, BorderLayout.SOUTH); contener.add(panelGauche, BorderLayout.EAST); contener.add(panelDroite, BorderLayout.WEST); contener.add(panelCentre, BorderLayout.CENTER); JLabel lLogin = new JLabel("Username"); JLabel lPassword = new JLabel("Password"); panelCentre.setBorder(new TitledBorder("Connection")); panelCentre.add(panelConnexion); panelCentre.add(lLogin); panelCentre.add(tLogin); panelCentre.add(lPassword); panelCentre.add(tPassword); panelCentre.add(bConnect); //bConnect.addActionListener(new ValiderListener()); panelCentre.add(bCancel); panelConnexion.add(new JLabel ("Welcome")); this.setVisible(true); } public void initObj() { this.bConnect = new JButton("Connect"); this.bConnect.addActionListener(this); this.bCancel = new JButton("Cancel"); this.bCancel.addActionListener(this); this.tLogin = new JTextField(); this.tPassword = new JPasswordField(); this.tLogin.addKeyListener(this); this.tPassword.addKeyListener(this); } public void keyPressed(KeyEvent ke) { if(ke.getKeyCode() == KeyEvent.VK_ENTER) this.bConnect.doClick(); } public void actionPerformed(ActionEvent event) { Object source= event.getSource(); if (source == bCancel) System.exit(0); else if (source == bConnect) { new ReportWindow(); /* String login = tLogin.getText(); String pass = new String(tPassword.getPassword()); if ((login.equals("root")) && (pass.equals("root"))) { this.setVisible(false); new ReportWindow(); } else { JOptionPane errorPanel = new JOptionPane(); errorPanel.showMessageDialog(null, "Invalid Username/Password", "Error", JOptionPane.ERROR_MESSAGE); this.tLogin.selectAll(); this.tPassword.setText(""); this.tLogin.requestFocus(); } */ } } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } @Override public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub } }
Je m'explique, j'aurais aimé que les JTextField ne se redimensionnent pas, en tout cas en hauteur, quand je redimensionne la fenêtre. J'ai essayé la méthode setMaximumSize mais rien n'y fait. Je pense que comme je suis dans un layout bah voila.. J'ai peut être pas utilisé le bon aussi..
Ensuite une fois que l'identification est bonne on passe à la deuxième fenêtre.
Mon but était de diviser ma fenêtre en deux verticalement :
- Un coté (gauche) avec - Un bouton (qui va chercher des informations dans un flux)
- Une combobox qui se remplit avec les informations récupérées.
Les deux widget étant l'un au-dessus de l'autre.
- L'autre coté (droit) avec - Une JTable qui se remplit en fonction du choix fait dans la combobox.
Voici le code :
Et la malheureusement pour moi j'ai plein de problèmes :
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.BoxLayout; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JViewport; import javax.swing.table.DefaultTableModel; public class ReportWindow extends JFrame { public ReportWindow() { this.setSize (new Dimension (900,600)); //this.setResizable (false); this.setTitle("Report Window"); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); Container contener = this.getContentPane(); JPanel panelHaut = new JPanel(new GridLayout (1,1)); JPanel panelBas = new JPanel(new GridLayout (1,1)); JPanel panelGauche = new JPanel(new GridLayout (0,1)); JPanel panelDroite = new JPanel(new GridLayout (0,1)); JPanel panelCentre = new JPanel(new GridLayout (1,1)); contener.add(panelHaut, BorderLayout.NORTH); contener.add(panelBas, BorderLayout.SOUTH); contener.add(panelDroite, BorderLayout.EAST); contener.add(panelGauche, BorderLayout.WEST); contener.add(panelCentre, BorderLayout.CENTER); JPanel tmp = new JPanel(); JButton bImport = new JButton("Import bookings"); JComboBox cmbBooking = new JComboBox(); tmp.add(bImport); tmp.add(cmbBooking); cmbBooking.setPreferredSize(new Dimension(200, 20)); panelGauche.add(tmp); Object[][] data = { {"Cysboy", "28 ans", "1.80 m"}, {"BZHHydde", "28 ans", "1.80 m"}, {"IamBow", "24 ans", "1.90 m"}, {"FunMan", "32 ans", "1.85 m"} }; String title[] = {"Pseudo", "Age", "Taille"}; JTable tableau = new JTable(data, title); panelDroite.add(new JScrollPane(tableau)); this.setVisible(true); } }
- Sur le panneau de gauche je n'arrive pas à avoir le bouton et en-dessous la combobox
- Quand je redimensionne la fenêtre, le panel droit cache celui de gauche
- Je n'arrive pas à éditer le nombre de colonnes et titres des colonnes quand je le souhaite. Là j'ai mis des choses dans la table pour voir un peu ce que cela donnait mais à l'ouverture de la fenêtre elle doit être vide.
Quelqu'un saurait-il m'indiquer comment résoudre ces quelques problèmes ?
Merci d'avance pour votre aide.
Partager