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 :

Mettre la JFrame à son ouverture au 1er plan


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Invité
    Invité(e)
    Par défaut Mettre la JFrame à son ouverture au 1er plan
    Bonsoir ou plutôt bonne nuit

    Voilà j'ai essayé plusieurs méthodes pour mettre mettre la JFrame que j'ouvre (depuis une autre JFrame) au 1er plan (ce qui m'intéresse surtout c'est qu'elle apparaisse au dessus du JFrame parent), mais en vain. Alors j'ai peut être faux mais j'ai essayé de lui mettre le focus (faut-il utiliser un focus au moins ?...) mais sans succès.

    Comment puis-je faire s'il vous plaît.


    Bonne soirée | nuit.

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fenetre.setAlwaysOnTop(true);

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui c'est ce que j'ai fait, elle est bien dessus, mais celle sélectionnée reste toujours l'autre

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fenetre.requestFocus();
    si ca ne marche pas precise les methodes que tu as deja utilisé, ca evitera de repeter .

  5. #5
    Invité
    Invité(e)
    Par défaut
    Non j'avais aussi essayé avec ça. Bah j'ai essayé un peu tout ce qui est à base de focus (requestFocus(), setFocusable(true), setFocusableWindowState(true))

    Alors c'est peut être moi qui ne sais pas m'y prendre. J'ai une classe qui se charge de créer cette fenêtre. Dans cette classe je précise qu'elle est toujours OnTop et dans mon main, je l'instance en début de main, puis s'il y a une erreur, je la met visible. Et les focus je les mettait à la suite du setVisible(true).

  6. #6
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Sinon poste nous le code qu'on y voit un peu plus clair

  7. #7
    Invité
    Invité(e)
    Par défaut
    Voici le code pour la fenêtre qui apparaît:
    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
    package client;
     
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import java.awt.BorderLayout;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import java.awt.Rectangle;
    import java.awt.Dimension;
    import java.awt.Toolkit;
     
    import javax.swing.SwingConstants;
     
    public class ConnexionError extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private JPanel jContentPane = null;
    	private JLabel jLabelError = null;
    	private JButton jButtonError = null;
     
    	/**
             * @param owner
             */
    	public ConnexionError() {
    		super();
    		initialize();
    	}
     
    	/**
             * This method initializes this
             * 
             * @return void
             */
    	private void initialize() {
    		this.setSize(225, 120);
    		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    		this.setLocation(dim.width/2 - this.getWidth()/2, dim.height/2 - this.getHeight()/2);
    		this.setAlwaysOnTop(true);
    		this.setResizable(false);
    		this.setTitle("Error connexion");
    		this.setContentPane(getJContentPane());
    		this.addWindowListener(new java.awt.event.WindowAdapter() {
    			public void windowClosing(java.awt.event.WindowEvent e) {
    				System.exit(0);
    			}
    		});
     
    	}
     
    	/**
             * This method initializes jContentPane
             * 
             * @return javax.swing.JPanel
             */
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jLabelError = new JLabel();
    			jLabelError.setText("Unable to connect to the server");
    			jLabelError.setHorizontalAlignment(SwingConstants.CENTER);
    			jLabelError.setBounds(new Rectangle(12, 5, 191, 29));
    			jContentPane = new JPanel();
    			jContentPane.setLayout(null);
    			jContentPane.add(jLabelError, null);
    			jContentPane.add(getJButtonError(), null);
    		}
    		return jContentPane;
    	}
     
    	/**
             * This method initializes jButtonError 
             *      
             * @return javax.swing.JButton  
             */
    	private JButton getJButtonError() {
    		if (jButtonError == null) {
    			jButtonError = new JButton();
    			jButtonError.setBounds(new Rectangle(72, 48, 77, 23));
    			jButtonError.setText("Quit");
    			jButtonError.addMouseListener(new java.awt.event.MouseAdapter() {
    				public void mouseClicked(java.awt.event.MouseEvent e) {
    					System.exit(0);
    				}
    			});
    			jButtonError.addKeyListener(new java.awt.event.KeyAdapter() {
    				public void keyPressed(java.awt.event.KeyEvent e) {
    					if(e.getKeyCode() == 10)
    						System.exit(0);
    				}
    			});
    		}
    		return jButtonError;
    	}
     
    }  //  @jve:decl-index=0:visual-constraint="10,10"
    Et le code pour le main (raccourci à l'essentiel):
    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
    public class Client extends Thread{
     
    	private BufferedReader in;
    	private PrintWriter out;
            private Login winLogin = new Login();
            private ConnexionError winConnexionError = new ConnexionError();
     
            public Client(String ip)
    	{
    		try
    		{
    			Socket socketClient = new Socket(ip, 31311); //create a socket with the IP specified by the client and the port 31311
    			in = new BufferedReader(new InputStreamReader(socketClient.getInputStream())); //we create a new buffer in reading mode throw the server
    			out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socketClient.getOutputStream())),true); //same but in writing mode
    	      	this.start(); //we start the multithread
    	    }		
    		catch( IOException e ) 
    		{
    			winConnexionError.setVisible(true); //the window "Error Connexion" appears
    		}
    	}
     
            public static void main(String[] args)
    	{
    		Client client = new Client("127.0.0.1"); //we create a new Client object with the IP given by the user
    		client.winLogin.setVisible(true); //we set the Log In window visible
    }

  8. #8
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    peut-être en utilisant la méthode requestFocusInWindow() sur la frame que tu veux faire apparaître.

    Sinon ce que tu veux faire apparaitre c'est un message d'erreur non?

    Pourquoi ne pas utiliser un JDialog plutôt qu'un JFrame?

  9. #9
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    tu peux faire

    Mais dans ce cas elle sera en premier plan tout au long de son execution!

    Sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    setFocusable(true);
    requestFocus();
    Si aucun des 2 marche,

  10. #10
    Invité
    Invité(e)
    Par défaut
    Mais dans ce cas elle sera en premier plan tout au long de son execution!
    Non car en appuyant sur le bouton de la fenêtre qui s'ouvre ou en la fermant on quite le programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setFocusable(true);
    requestFocus();
    Non ça ne marche pas non plus

  11. #11
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Vue que ta fenetre est une "Erreur frame" tu pourrais utiliser un JDialog plutot qu'une JFrame.

    avec un petit setModal(true);

    ca devrait marcher.

    edit : je repete désolé, j'avais pas vu le message de sironimo

  12. #12
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La méthode toFront pourrait elle être utile dans ton cas?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Moi non plus je n'avais pas vu ton message sironimo.

    Bon bah j'ai donc créé un JDialog à la place et dans le main j'ai essayé avec plein de méthodes, puis j'ai même fait la totale comme ce qui suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dialogTestt.setVisible(true);
    dialogTestt.setFocusable(true);
    dialogTestt.setModal(true);
    dialogTestt.requestFocus();
    dialogTestt.setFocusableWindowState(true);
    dialogTestt.toFront();
    Mais rien ne sélectionne la boite de dialogue

  14. #14
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Tu es bien sur que ton jdialog est créé et s'affiche?

    parce que là je commence à me demander comment faire

    edit : tu as testé le requestfocusInWindows()??
    edit2: tu as passé quoi en paramètre à ta JDialog à la création ? ta frame? rien?

  15. #15
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Si meme un Jdialog ne prend pas la priorité en modal...

    Ca doit venir de ton autre fenetre dans ce cas.

    Tu n'aurais pas des threads ou je ne sais quoi qui provoque le rafraichissement de la fenetre principale? il y a forcement quelque chose qui declenche un requestFocus sur la fenetre

  16. #16
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Je suis pres a parier que c'est encore un petit truc de rien du tout auquel on a pas pensé...

  17. #17
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    teste aussi tout simplement :

    On sait jamais

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par eclesia
    Si meme un Jdialog ne prend pas la priorité en modal...

    Ca doit venir de ton autre fenetre dans ce cas.

    Tu n'aurais pas des threads ou je ne sais quoi qui provoque le rafraichissement de la fenetre principale? il y a forcement quelque chose qui declenche un requestFocus sur la fenetre
    Yes !!! En fait c'est de ma faute (forcément c'est moi qui code ). Je sais pas pourquoi mais dans ma tête quand l'exception était appelé, la suite du code du main ne s'exécutait pas. Alors j'ai rajouté après l'appel de la boite de dialogue, un wait() et là a plus de problèmes


    Merci encore tout le monde.
    Allez j'écrit déjà le topic de mon autre problème

  19. #19
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par sironimo
    teste aussi tout simplement :

    On sait jamais
    Il ne faut pas utiliser la méthode show() qui est deprecated mais la méthode setVisible() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dialogTestt.setVisible(true);

  20. #20
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    autant pour moi lol c'est vrai que je suis plus à jour

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

Discussions similaires

  1. Fermer proprement/mettre au 1er plan un logiciel
    Par chris-57 dans le forum VBScript
    Réponses: 23
    Dernier message: 15/11/2009, 21h44
  2. Réponses: 3
    Dernier message: 29/01/2009, 10h39
  3. Intégrer du texte dans une JFrame à son ouverture?
    Par newjc dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 22/05/2008, 16h02
  4. [VB.NET] Mettre une form au 1er plan
    Par Aspic dans le forum VB.NET
    Réponses: 13
    Dernier message: 15/11/2005, 13h51
  5. [MFC] mettre une fenêtre en 1er plan
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 14/05/2004, 17h39

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