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

avec Java Discussion :

Interface graphique java


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Programmeur debutant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Programmeur debutant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Interface graphique java
    Bonsoir a tous ,
    je suis actuellement en train de creer un petit programme et pour l'instant je n'ai fait que la fenêtre, son aperçu etc etc ..
    Ma question pourrai vous paraître idiote mais comment donner une suite a mon programme ? Ex: donner une fonction a un bouton qui quand je cliquerais sur celui si m'afficherai du nouveau contenu dans la fenêtre que j'editerai moi meme comme l'intérieure d'une JFrame basique ..
    Je ne trouve aucun cours faisait reference a cela appart peut etre inseret une JWindow mais je doute que ce sois la solution.
    Je ne comprend vraiment pas...
    J'espere que j'aurai était assez claire pour vous
    Merci d'avance a tous pour vos reponses
    bonne soiree

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Que veux-tu dire par "que j'editerai moi meme comme l'intérieure d'une JFrame basique" ? Tu veux faire un éditeur de JFrame/Formulaire en Swing ?

    En tout cas, on ne peut même une JFrame (ou JWindow) dans une JFrame. La seule notion de fenêtre à l'intérieur d'une autre est la notion de JInternalFrame, pour faire du MDI. Mais on peut mettre l'intérieur d'une JFrame dans une JFrame pour faire un éditeur de JFrame : l'intérieur d'une JFrame est un Container, et on peut mettre un Container dans n'importe quel Container.

  3. #3
    Candidat au Club
    Homme Profil pro
    Programmeur debutant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Programmeur debutant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je voulais dire en gros que je pourrai la personnaliser, ( couleur , etc...) afin de tout simplement donner une suite au programme pour afficher du contenu neuf tout le temps dans la meme fenêtre de depart, je ne sais pas si j'arrive a bien me faire comprendre desolé

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ok, tu veux juste changer le contenu d'une même JFrame en cliquant sur un bouton. Il te suffit de prévoir un emplacement pour un JPanel qui sera ton contenu (par exemple le centre d'un BorderLayout, avec le bouton au ce BorderLayout). L'action du bouton fera :

    • supprimer le panel ajouté précédemment ( appel de JFrame.remove(Component))
    • Créer le nouveau JPanel (nouveau contenu)
    • Ajouter ce nouveau JPanel à la JFrame (appel de JFrame.add(Component) : avec un BorderLayout, le panel ira directement au centre)
    • Appeler frame.revalidate() pour forcer le layout
    • Appeler frame.repaint() pour forcer le ragrachissement de l'affichage
    • Éventuellement appeler frame.pack() si le contenu change de taille pour réadapter automatiquement la taille de la JFrame

  5. #5
    Candidat au Club
    Homme Profil pro
    Programmeur debutant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Programmeur debutant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    D'accord merci , pourrai tu me faire juste un petit exemple code source stp que je visualise sa sans faire d'erreur dans mon code

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tout simplement quelque chose comme ça par exemple :

    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
    public class DemoMC extends JPanel {
     
     	private final JButton buttonNext; 
     
    	private JPanel currentPanel;
     
    	private IPanelFactory panelFactory; // une instance de classe chargée de créer les différents contenus mis dans un JPanel
     
    	public DemoMC() {
    		super(new BorderLayout()); 
                    panelFactory = new MyPanelFactory(); // par exemple
    	 	JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    	 		buttonNext = new JButton("Next");
    		buttonNext.addActionListener(e-> next()); 
    		buttonPanel.add(buttonNext); 
    		update(); // afficher le premier panel
    	} 
     
    	public void next() {
    		reset(); 
    		update();
    	} 
     
    	private void reset() {
    		if ( currentPanel!=null ) {
    			remove(currentPanel);
    		}
    	}
    	private void update() {
    		currentPanel = panelFactory.createPanel();
                   add(currentPanel);
    		revalidate();
    		repaint();
    	}
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		frame.add(new DemoMC()); 
     
    		frame.setSize(400, 600);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    }

  7. #7
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Pour changer de panneaux, il est préférable d'utiliser le CardLayout


    Cordialement

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ça dépend : le CardLayout impose que tous les panneaux soit présents à la fois. Ce n'est pas pareil que de changer de contenu. On peut jouer avec le CardLayout en ajoutant et enlevant des panneaux, mais ça n'apporte pas vraiment de simplification à faire directement des add/remove de composant.

  9. #9
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Je persiste, le CardLayout répond exactement au besoin.

    Citation Envoyé par https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html
    Conceptually, each component that a CardLayout manages is like a playing card or trading card in a stack, where only the top card is visible at any time. You can choose the card that is showing in any of the following ways:

    By asking for either the first or last card, in the order it was added to the container
    By flipping through the deck backwards or forwards
    By specifying a card with a specific name
    Dans votre code aussi, les panneaux sont créés et ajoutés dans un tableau au début. Il y a moyen de faire du chargement tardif mais, c'est aussi possible avec le card layout.

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je persiste à dire qu'il n'y aucun intérêt à utiliser un CardLayout pour n'afficher qu'un seul composant qu'on supprime à chaque fois qu'on en affiche un autre. Ma démo est une démo de principe : effectivement, j'aurais pu ne faire qu'une méthode qui fait appel à une fabrique de JPanel pour éviter d'avoir un tableau, qui ressemble trop à une solution du type CardLayout. Tiens je vais la changer, pour qu'il n'y ait pas d'équivoque.

  11. #11
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Je ne veux pas me battre, hein Je voulais juste présenter le CardLayout parce que votre premier bout de code est une ré-implémentation partielle de celui ci

    Je persiste à dire qu'il n'y aucun intérêt à utiliser un CardLayout pour n'afficher qu'un seul composant qu'on supprime à chaque fois qu'on en affiche un autre.
    En réalité, c'est son principal et seul intérêt (sauf qu'il ne supprime pas, il cache, pas besoin de recréer le composant à chaque fois).

Discussions similaires

  1. affichage d'un CV dans une interface graphique JAVA
    Par midoscofield dans le forum Documents
    Réponses: 2
    Dernier message: 11/05/2009, 15h05
  2. Interface graphique java
    Par clubiste012 dans le forum Débuter
    Réponses: 3
    Dernier message: 11/03/2009, 16h48
  3. matrice interface graphique JAVA
    Par saidoumosta dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 26/01/2009, 11h15
  4. Interface graphique java swing awt toolkit
    Par MaxLaMenaX dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 06/11/2008, 15h39
  5. Composants à utiliser pour une interface graphique Java
    Par nicolas.pied dans le forum Composants
    Réponses: 4
    Dernier message: 28/11/2005, 20h27

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