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

 Java Discussion :

Problème interface graphique


Sujet :

Java

  1. #21
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Pour la bar du haut, il y a une méthode JFrame.setMenuBar(taBar)

    Ensuite, il faut que tu cherche du côté des layout. C'est ce qui gère le placement des composants. Il y a tout ce qui faut sur developpez.com

  2. #22
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci pour votre réponse,
    mais quel(s) Layout dois-je utiliser ?
    J'ai essayé avec un BorderLayout, le résultat ne correspond pas vraiment à celui recherché.

  3. #23
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Un BorderLayout en base fera l'affaire.

    On met la JTextArea dans le BorderLayout.CENTER.

    Puis on crée un JPanel en BoxLayout horizontal (http://download.oracle.com/javase/tu...ayout/box.html) auquel on ajoute les deux JButton.

    Puis on ajoute ce JPanel dans le BorderLayout.SOUTH du conteneur principal.

  4. #24
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci votre réponse.
    J'ai donc essayer d'ajouter un le code qui suit, pour ajouter un BoxLayout, mais aucun bouton n'apparait, et lors du redimensionnement de la fenêtre, le JLabel ne reste pas centré, est-ce normal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JLabel label = new JLabel ("Bonjour ! Bienvenue sur mon application");
    		panel.add ((label), BorderLayout.CENTER);	
     
     
    		Box bouton = Box.createHorizontalBox();
    		bouton.add(new JButton("OK"));
    		bouton.add(Box.createGlue());
    		bouton.add(new JButton("Annuler"));
     
     
            Container c = getContentPane();
            c.add(bouton,BorderLayout.SOUTH);

    Et sinon, une dernière petite question, après je devrais réussir à terminé mon application.
    J'aimerais ouvrir une une nouvelle fenêtre sur clic d'un bouton de la fenêtre principale, et fermé la fenêtre principal. Pour le moment j'arrive à ouvrir la nouvelle fenêtre grâce à ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(source == bouton){
     
    		final JFrame frame = new JFrame("nouvelleFenêtre");
    		frame.setSize(300, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    Mais la fenêtre reste ouverte.
    Il y a t'il une solution ???

  5. #25
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oldFrame.setVisible(false);
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #26
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    D'accord merci.
    Mais le oldFrame, il faut bien que je le remplace par le nom que j'ai donné à ma Fenêtre principale ?
    Dsl de cette question idiote, mais comme je n'ai plus mes boutons, je ne peux pas faire les essais

  7. #27
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    En effet,
    Si ton déclare une inner class pour le Listener dans la classe de ta Frame, alors tu dois faire MyFrameClassName.this pour accéder à celle-ci.
    Sinon utilise des getter.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  8. #28
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci, ça marche impeccable.
    J'avais juste oublié le ".this"

    Par contre, mes boutons ne s'affiche toujours pas en BoxLayout

    Revoici mon bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JLabel label = new JLabel ("Bonjour ! Bienvenue sur mon application");
    		panel.add ((label), BorderLayout.CENTER);	
     
     
    		Box bouton = Box.createHorizontalBox();
    		bouton.add(new JButton("OK"));
    		bouton.add(Box.createGlue());
    		bouton.add(new JButton("Annuler"));
     
     
            Container c = getContentPane();
            c.add(bouton,BorderLayout.SOUTH);
    Est-ce que quelqu'un voit ce qui cloche ?

    Merci d'avance pour vos réponses

  9. #29
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Et bien voila, mon programme fonctionne enfin, ou presque.
    je n'arrive toujours pas à approché l'aspect rechercher de mes fenêtres,
    donc si quelqu'un a une idée ...
    Et sinon, à mon grand désespoir, un nouveau problème,(toujours très bête, mais ennuyeux), vient d'apparaitre.
    Lorsque je suis sur la deuxième fenêtre de mon application, et que je clique sur mon bouton Menu principale, et bien, rien ne se passe.
    Et c'est censé fermé la fenêtre actuellement ouverte, et bien-sur ouvrir le menu principale.

    Donc voici mon dernier bout de code qui cloche (hormis le disposition de mes composants ):

    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
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
     
    		bouton2 = new JButton ("Menu principale");
    		bouton.addActionListener(this);
    		panel.add(bouton2);
     
    		return panel;
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		Object source = e.getSource();
     
    		if((JButton)e.getSource()==bouton2){
    		//JFrame FenetreBoutonsListener.setVisible(true);
    		FenetreSaisieClaire.this.setVisible(false); 
     
    	}
    }
    J'ai retourné ce petit bout de code dans tous les sens, mais ça ne faisait que empirer.

  10. #30
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Le mieux est que tu rajoute un ActionListener sur le bouton que tu veux habituer avec la méthode addActionListener(Action Listener(){...

    edit : je voulais dire "appuyer" pas "habituer".

  11. #31
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci de la réponse,
    mais je vient de changer de méthode, pour que mon code soit plus claire.
    J'ai en effet créer une nouvelle classe, "Menu", que voici:

    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
    import java.awt.event.ActionEvent;
     
    import javax.swing.AbstractAction;
     
    public class Menu extends AbstractAction {
    	private Fenetre fenetre;
     
    	public Menu(Fenetre fenetre, String texte){
    		super(texte);
     
    		this.fenetre = fenetre;
    	}
     
    	public void actionPerformed(ActionEvent e) { 
     
    		final JFrame FenetreBoutonsListener.setVisible(true);//On essai de rendre visible la fenetre principale
    		Fenetre.this.setVisible(false); // on essai de fermer cette fenetre
     
    	}
    	}
    Mais même comme ça, à la compilation une erreur survient, que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Menu.java:16: ';' expected
    		final JFrame FenetreBoutonsListener.setVisible(true);//On la rend visible
    		                                   ^
    1 error
    >Exit code:
    Je ne comprend vraiment pas d’où vient cette erreur !!!

  12. #32
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final JFrame FenetreBoutonsListener.setVisible(true);//On essai de rendre visible la fenetre principale
    Vous commencez votre ligne comme si vous voulez déclarer un objet.
    Mais je ne vois ni son identifieur, ni son affectation.
    Vous utilisez une méthode qui s'applique à un objet dans un contexte statique. (Class.laMethode() => laMethode() doit être statique)
    Je suppose que la ligne correcte serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Réalisation de l'instanciation
    final JFrame newFrame = new FenetreBoutonsListener();
    //Affichage de la fenêtre
    newFrame .setVisible(true)
    Note :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fenetre.this.setVisible(false);
    Cette ligne de code à peu de chance de fonctionné. Car votre code ne se trouve pas dans la classe Fenetre. Qui est "this" du coup ?
    Ce qui est dommage c'est que vous disposez justement d'un lien vers celle-ci dans votre classe.
    Autant l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.fenetre.setVisible(false);
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  13. #33
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Waou, merci beaucoup, ça marche enfin.
    J'avais effectivement oublié le "final JFrame newFrame = new FenetreBoutonsListener();",
    et surtout le "this.fenetre.setVisible(false);"
    Mon programme fonctionne enfin, il ne me reste plu-qu’à essayer d’organiser les composants.
    Et une petite question pour la route, est-il possible de sélectionner un texte d'un JLabel ?

  14. #34
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Non, ce n'est pas possible.
    Mais il existe une astuce pour cela.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  15. #35
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Très bien,
    je vous suis très reconnaissant pour toutes vos réponses, et explications.
    Je crois qu'il est enfin temps de cliquer sur le fameux bouton '"Résolu".
    Encore merci, pour toutes vos explications

  16. #36
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bonsoir,
    dsl de ré-ouvrir ce sujet, mais je viens de me créer un nouveau problème.
    Et oui, en voulant améliorer mon programme, j'ai voulu créer un bouton "Quitter", au menu principal, qui est ouvre un nouvelle fenêtre (JFrame), qui est censé se fermé automatiquement après un délai de 5 secondes.

    Lorsque je clique sur le bouton "Quitter", la fenêtre s'ouvre, mais ne se coupe pas.

    Voici mon code:

    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
    import javax.swing.*;
    import java.awt.*;
     
    public class FenetreQuitter extends JFrame {
    	private JLabel label;
     
     
    	public FenetreQuitter(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("Quitter"); //On donne un titre à l'application
    		setSize(800,650); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
     
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new BorderLayout());
     
    		JLabel label = new JLabel("J'espère que mon application vous a plu, Au revoir =D",JLabel.CENTER);
    		panel.add(label,BorderLayout.CENTER);
     
    		return panel;
    	}
     
     
    	public static void main(String[] args) {
    		//On crée une nouvelle instance de notre FenetreTexte
    		FenetreQuitter fenetre = new FenetreQuitter();
    		fenetre.setVisible(true);//On la rend visible
    		try {
    		Thread.sleep(5000);
    		} catch (InterruptedException e) {}
    		System.exit(0);
     
     
     
    }
     
    	}
    Une idée sur ce petit problème ??

  17. #37
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Pour fermer une fenêtre, il y a la méthode :

  18. #38
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci de cette réponse,
    mais cette méthode permet-elle d'attendre un délai de 5 seconde (par exemple), avant la fermeture ??

  19. #39
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Thread.sleep(5000);
    fenetre.dispose();

  20. #40
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Pardonner mon incompétence,
    mais en rajoutant le code suivant dans le main, j’obtiens encore une erreur


    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         public static void main(String[] args) {
    		//On crée une nouvelle instance de notre FenetreTexte
    		FenetreQuitter fenetre = new FenetreQuitter();
    		fenetre.setVisible(true);//On la rend visible
    		Thread.sleep(5000);
    		fenetre.dispose();
     
     
     
    }
    Voici l'erreur en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FenetreQuitter.java:39: unreported exception java.lang.InterruptedException; must be caught or declared to be thrown
    		Thread.sleep(5000);
    		            ^
    1 error
    Faut-il importer quelque chose ??

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Problèmes Interface graphique
    Par COLOMBAT dans le forum Interfaces Graphiques en Java
    Réponses: 11
    Dernier message: 27/11/2007, 15h33
  2. Problème Interface graphique avec EJB
    Par manuvd dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 19/06/2007, 13h04
  3. Réponses: 3
    Dernier message: 15/06/2007, 19h14
  4. Problème interface graphique mandriva avec HP
    Par alicom86 dans le forum Mandriva / Mageia
    Réponses: 7
    Dernier message: 14/05/2007, 22h24
  5. Problème interface graphique
    Par thecyril dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/01/2007, 17h08

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