IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Fermeture de JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Fermeture de JFrame
    Bonjour à tous,

    j'ai vu qu'il y avait de nombreux sujet sur cette question mais je n'ai pas trouvé mon bonheur en cherchant sur le forum.

    Je débute en java et je rencontre un problème.
    Mon application comporte une fenêtre principale ainsi qu'une deuxième qui est ouverte lors d'un clic sur un bouton de la fenêtre principale. Je cherche à fermer la deuxième lors du clic sur un bouton situé sur celle-ci.
    je code sous eclipse et j'obtiens une erreur sur le scEframe.dispose();
    je ne comprends pas pourquoi.

    voici le code correspondant (je vous mets, la classe de la fenêtre principale, la classe correspondant au bouton qui lance la deuxième frame, la classe de la deuxième frame et la classe du bouton de fermeture).

    au passage, si vous relevez de grosses bêtises, vous pouvez toujours le dire, je prends les conseils dans la mesure où ils sont constructifs !

    Console.java (fenetre principale)
    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
     
    public class Console extends javax.swing.JFrame {
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				Console prframe= new Console();
    				prframe.setLocationRelativeTo(null);
    				prframe.setVisible(true);
    				prframe.setTitle("Console DMX");
    			}
    		});
    	}
    	public Console() {
    		super();
    		initGUI();
    	}
     
    	private void initGUI() {
    		try {
    			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    			{
    				jDesktopPane1 = new JDesktopPane();
    				getContentPane().add(jDesktopPane1, BorderLayout.CENTER);
    				GridBagLayout jDesktopPane1Layout = new GridBagLayout();
    				jDesktopPane1Layout.columnWidths = new int[] {200, 7, 200, 7, 60, 7, 40, 7, 200, 7, 20, 7};
    				jDesktopPane1Layout.rowHeights = new int[] {45, 20, 61, 40, 90, 90, 90, 90, 90, 90};
    				jDesktopPane1Layout.columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0};
    				jDesktopPane1Layout.rowWeights = new double[] {0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
    				jDesktopPane1.setLayout(jDesktopPane1Layout);
    				jDesktopPane1.setBackground(new java.awt.Color(0,0,0));
    				jDesktopPane1.setPreferredSize(new java.awt.Dimension(1008, 732));
     
    /*...*/
    {
    					savescene = new JButton(new SaveSceneAction("<html>Enregistrer<br/>Scène</html>"));
    					jDesktopPane1.add(savescene, new GridBagConstraints(8, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    					savescene.setFont(new java.awt.Font("Arial",0,16));
    				}
    /*...*/
    }
    SaveSceneAction.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    	public class SaveSceneAction extends AbstractAction {
    		public SaveSceneAction(String texte){
    			super(texte);
    		}
     
    		public void actionPerformed(ActionEvent e) { 
    			SceneEditor.main();
    			System.out.println("Lancement Enregistrement de scène");
    		} 
    	}
    SceneEditor.java (la deuxieme fenetre)
    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
     
    public class SceneEditor extends javax.swing.JFrame {
    public static void main() {
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				SceneEditor scEframe = new SceneEditor();
    				scEframe.setLocationRelativeTo(null);
    				scEframe.setVisible(true);
    				scEframe.setTitle("Editeur de scènes");
    			}
    		});
    	}
    public SceneEditor() {
    		super();
    		initGUI();
    	}
     
    	private void initGUI() {
    		try {
    			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    			{
    				jDesktopPane1 = new JDesktopPane();
    				getContentPane().add(jDesktopPane1, BorderLayout.CENTER);
    				GridBagLayout jDesktopPane1Layout = new GridBagLayout();
    				jDesktopPane1Layout.columnWidths = new int[] {7, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 7, 7, 7};
    				jDesktopPane1Layout.rowHeights = new int[] {7, 20, 20, 20, 20, 20, 20, 20, 20, 7, 7, 7};
    				jDesktopPane1Layout.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};
    				jDesktopPane1Layout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};
    				jDesktopPane1.setLayout(jDesktopPane1Layout);
    /*...*/				
    {
    					quitE = new JButton(new QuitSceneEditor("Terminer"));
    					jDesktopPane1.add(quitE, new GridBagConstraints(11, 11, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    					quitE.setFont(new java.awt.Font("Arial",0,18));
    				}
    /*....*/
    }
    QuitSceneEditor.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	public class QuitSceneEditor extends AbstractAction {
    		public QuitSceneEditor(String texte){
    			super(texte);
    		}
     
    		public void actionPerformed(ActionEvent e) { 
    			Component dialog = null;
    			int option = JOptionPane.showConfirmDialog(dialog, "Voulez-vous vraiment quitter l'éditeur de scènes ?", "Confirmation", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null);
    			if (option == JOptionPane.YES_OPTION) {
    				scEframe.dispose();
    			}
    			}
    }

  2. #2
    Membre habitué Avatar de arnaud036
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 172
    Points
    172
    Par défaut
    Salut,

    Il t'indique quoi comme erreur ??
    Ensuite deja je ne pense pas que ton code Compile car dans ta classe tu fais un scEframe.dispose(); mais ton instance scEframe n'es pas présente dans ta classe, donc tu devrais la faire passé dans ton constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class QuitSceneEditor extends AbstractAction {
                   private JFrame frame;
    		public QuitSceneEditor(String texte, JFrame frame){
    			super(texte);
                            this.frame = frame;
    		}
     
                    public void actionPerformed(ActionEvent e) { 
    			Component dialog = null;
    			int option = JOptionPane.showConfirmDialog(dialog, "Voulez-vous vraiment quitter l'éditeur de scènes ?", "Confirmation", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null);
    			if (option == JOptionPane.YES_OPTION) {
    			         frame.dispose();
    			}
    			}
    Et l'appeller ainsi dans ta classe SceneEditor :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quitE = new JButton(new QuitSceneEditor("Terminer",this));

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Impec, ca fonctionne. Je te remercie.

    ps : effectivement, avant ca ne compilait pas...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermeture de JFrame
    Par Raikyn dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 25/04/2015, 16h04
  2. Fermeture de JFrame
    Par a-sana dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 13/05/2010, 02h03
  3. Problème de fermeture de JFrame
    Par Sylver--- dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 25/05/2007, 20h13
  4. [debutante] JFrame : iconification, fermeture, maximization
    Par divlys dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 29/12/2005, 20h53
  5. JFrame : fermeture => EXIT_ON_CLOSE d'office ?
    Par gletare dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 07/11/2005, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo