import javax.swing.*; import java.awt.*; import java.awt.event.*; public class LesDialogs2 extends JFrame implements ActionListener { JPanel toolbar; JLabel statusline; JButton open1, hide1, open2, hide2, quit; JTextArea textArea; JDialog mondialog, mondialogModal; public static void main(String argv[]) { LesDialogs2 toplevel = new LesDialogs2(); // initialiser le titre, la disposition et rendre visible toplevel.setTitle("Les Dialogs 2"); toplevel.pack(); toplevel.show(); } public LesDialogs2() { Container contentPane = getContentPane(); // LesDialogs1 herite de Frame => BorderLayout par défaut // "toolbar" au "nord" de la fenêtre principale toolbar = new JPanel(); contentPane.add(BorderLayout.NORTH, toolbar); toolbar.add(open1 = new JButton("Open 1")); toolbar.add(hide1 = new JButton("Hide 1")); toolbar.add(open2 = new JButton("Open 2")); toolbar.add(hide2 = new JButton("Hide 2")); toolbar.add(quit = new JButton("Quit")); // associer un ActionListener aux Buttons open1.addActionListener(this); hide1.addActionListener(this); open2.addActionListener(this); hide2.addActionListener(this); quit.addActionListener(this); // Zone de texte (au "centre" de la fenêtre principale) textArea = new JTextArea(10, 25); textArea.setBackground(Color.white); contentPane.add(BorderLayout.CENTER, textArea); // "status line" statusline = new JLabel("Ready"); contentPane.add(BorderLayout.SOUTH, statusline); // creer les Dialogs sans les ouvrir mondialog = new MonDialog(this, "Objet MonDialog", false); mondialogModal = new MonDialog(this, "Objet MonDialog Modal", true); } // méthode appelée quand on clique Open*, Hide* ou Quit public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == open1) mondialog.show(); else if (source == hide1) mondialog.setVisible(false); else if (source == open2) mondialogModal.show(); else if (source == hide2) mondialogModal.setVisible(false); else if (source == quit) System.exit(0); } } class MonDialog extends JDialog implements ActionListener { public MonDialog(JFrame frame, String title, boolean modal) { // appeler le constructeur de la super-classe // NB: doit etre en premiere ligne super(frame, title, modal); Container dialogContent = getContentPane(); JLabel label = new JLabel("Valeur"); JTextField textField = new JTextField(20); JButton ok = new JButton("Ok"); dialogContent.add(BorderLayout.NORTH, label); dialogContent.add(BorderLayout.CENTER, textField); dialogContent.add(BorderLayout.SOUTH, ok); pack(); // NE PAS OUBLIER ! } public void actionPerformed(ActionEvent e) { // a completer ... } }