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

Interfaces Graphiques en Java Discussion :

Afficher nouvelle page


Sujet :

Interfaces Graphiques en Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut Afficher nouvelle page
    Bonjour,

    J'ai un formulaire qui contient un bouton et je souhaiterai lorsque je clique sur ce bouton, que le formulaire soit repaint pour en afficher un nouveau.
    J'ai donc essayer ceci mais ne fonctionne pas. Cela m'affiche le nouveau formulaire en dessous de celui actuel
    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 void actionPerformed(ActionEvent event) {
    		Object source = event.getSource();
     
    		if (source.equals(creer)) {
    			calendrier = new CalendarWeekViewer();
    			JPanel panneau = new JPanel();
    			this.repaint();
    	    	panneau.setLayout(new BorderLayout());
     
    			panneau.add(calendrier);
    			this.add(panneau);
    			this.updateUI();
    		}
    	}
    Merci de votre aide

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton.setBackground(Color.BLACK);
    cela ne fonctionne pas? d'ailleurs quel est le nom de ton bouton?

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Mon bouton s'appel "creer"
    Et si je fait ce que tu as dit, cela met mon bouton en noir, c'est tout

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Voici la classe entière:
    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
    public class ChoixAnnee extends JPanel implements ActionListener, ListSelectionListener {
    	private JList liste;
        private String[] annee = {"2010-2011", "2011-2012", "2012-2013", "2013-2014",
        "2014-2015", "2015-2016", "2016-2017", "2017-2018", "2018-2019", "2019-2020"};
        private JButton creer;
        private JPanel panneau1;
        private JLabel label;
        private CalendarWeekViewer calendrier;
        public ChoixAnnee(){
        	panneau1 = new JPanel();
        	liste = new JList(annee);
        	creer = new JButton("Créer le calendrier");
        	label = new JLabel("Veuillez choisir une année scolaire pour créer le planning");
        	creer.addActionListener(this);
        	liste.setSelectedIndex(5);
        	liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) ;
        	JScrollPane ascenseur = new JScrollPane(liste);
        	ascenseur.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        	panneau1.setLayout(new BorderLayout());
        	panneau1.add(BorderLayout.CENTER, ascenseur);
        	panneau1.add(BorderLayout.SOUTH, creer);
        	this.add(label);
        	this.add(panneau1);
        	liste.addListSelectionListener(this);
        }
     
        public void actionPerformed(ActionEvent event) {
    		Object source = event.getSource();
     
    		if (source.equals(creer)) {
    			calendrier = new CalendarWeekViewer();
    			JPanel panneau = new JPanel();
    			this.repaint();
    	    	panneau.setLayout(new BorderLayout());
    			panneau.add(calendrier);
    			this.add(panneau);
    			this.updateUI();
    		}
    	}
     
    	public void valueChanged(ListSelectionEvent event) {
    		if (!event.getValueIsAdjusting()) {
                Object valeur = liste.getSelectedValue();
            }
    	}
    Voilà ce que j'ai actuellement.
    Or moi je veux que la partie du bas mais sur tout la page quand je clique sur le bouton
    Images attachées Images attachées  

  5. #5
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Excuse moi j'avais mal lu ton problème,, essaye remove pour supprimer ton ancien formulaire.

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Merci bien,
    Le removeAll() fonction
    En revanche, quand je clic sur un item de mon formulaire et m'affiche le nouveau formulaire derrière l'ancien

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Voici mon appli quasiment complète:
    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
    public class MenuBar extends JMenuBar implements ActionListener {
    	private JMenuBar barreMenu;
    	private JMenu fichier, edition;
    	private JMenuItem ouvrir, nouveau, sauvegarder, fermer, copier, coller;
    	private ChoixAnnee choixAnnee;
    	private Accueil frameAccueil;
    	public MenuBar(Accueil accueil){
    		this.frameAccueil = accueil;
    		barreMenu = this;
    		fichier = new JMenu("Fichier");
    		barreMenu.add(fichier);
    		nouveau = new JMenuItem("Nouveau");
    		fichier.add(nouveau);
    		nouveau.addActionListener(this);
    		ouvrir = new JMenuItem("Ouvrir");
    		fichier.add(ouvrir);
    		sauvegarder = new JMenuItem("Sauvegarder");
    		fichier.add(sauvegarder);
    		fermer = new JMenuItem("Fermer");
    		fichier.add(fermer);
    		edition = new JMenu("Edition");
    		barreMenu.add(edition);
    		copier = new JMenuItem("Copier");
    		edition.add(copier);
    		coller = new JMenuItem("Coller");
    		edition.add(coller);
     
    	}
     
    	public void actionPerformed(ActionEvent event) {
    		Object source = event.getSource();
     
    		if (source.equals(nouveau)) {
    			choixAnnee = new ChoixAnnee();
    			frameAccueil.add(choixAnnee);
    			this.updateUI();
    		}
    	}
    }
    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
    public class Accueil extends JFrame{
    	private MenuBar barreMenu;
    	public Accueil(){
    		setTitle("Gestion d'emploi du temps");
    		initUI();
     
    	}
     
    	private void initUI() {
    		setSize(600, 600);
    		barreMenu = new MenuBar(this);
    		setJMenuBar(barreMenu);
    	}
     
    	public static void main(String[] args) {
        	Accueil frame = new Accueil();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        	frame.setVisible(true);
     
        }
    }
    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
    public class ChoixAnnee extends JPanel implements ActionListener, ListSelectionListener {
    	private JList liste;
        private String[] annee = {"2010-2011", "2011-2012", "2012-2013", "2013-2014",
        "2014-2015", "2015-2016", "2016-2017", "2017-2018", "2018-2019", "2019-2020"};
        private JButton creer;
        private JPanel panneau1;
        private JLabel label;
        private CalendarWeekViewer calendrier;
        public ChoixAnnee(){
        	panneau1 = new JPanel();
        	liste = new JList(annee);
        	creer = new JButton("Créer le calendrier");
        	label = new JLabel("Veuillez choisir une année scolaire pour créer le planning");
        	creer.addActionListener(this);
        	liste.setSelectedIndex(5);
        	liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) ;
        	JScrollPane ascenseur = new JScrollPane(liste);
        	ascenseur.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        	panneau1.setLayout(new BorderLayout());
        	panneau1.add(BorderLayout.CENTER, ascenseur);
        	panneau1.add(BorderLayout.SOUTH, creer);
        	this.add(label);
        	this.add(panneau1);
        	liste.addListSelectionListener(this);
        }
     
        public void actionPerformed(ActionEvent event) {
    		Object source = event.getSource();
     
    		if (source.equals(creer)) {
    			this.removeAll();
    			calendrier = new CalendarWeekViewer();
    			JPanel panneau = new JPanel();
    	    	panneau.setLayout(new BorderLayout());
    			panneau.add(calendrier);
    			this.add(panneau);
    			this.updateUI();
    		}
    	}
     
    	public void valueChanged(ListSelectionEvent event) {
    		if (!event.getValueIsAdjusting()) {
                Object valeur = liste.getSelectedValue();
            }
    	}
    }

  8. #8
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    je n'ai pas bien compris ton formulaire est-il bien effacé? essaye de mettre un validate() pour confirmer la suppression et les modification, test aussi avec remove() et non removeAll() si cela ne fonctionne pas.

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Quand je clic sur le bouton creer, j'ai bien mon nouveau formulaire qui s'affiche et l'autre qui s'efface.
    En revanche, quand je clic sur un item de mon menu, le formulaire actuel reste et le nouveau se met derrière

  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 : 54
    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
    On fait toujours revalidate() au moins, voire repaint() en plus, (pour le container), après la suppression et/ou l'ajout de composants dans ce container (enfin, c'est souvent inutile pour le remove). Inutile d'appeler updateUI, ça ne sert que lorsqu'on personnalise un composant dUI, (comme par exemple, faire un bouton rotatif), les méthodes existantes se chargeant de faire l'updateUI quand c'est nécessaire. Toi, tu mets juste des composants dans des conteneurs, et tu utilises les fonctionnalités déjà existantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    this.removeAll();
    calendrier = new CalendarWeekViewer();
    Panel panneau = new JPanel();
    panneau.setLayout(new BorderLayout());
    panneau.add(calendrier);
    this.add(panneau);
    this.revalide();
    this.repaint();
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Ok,

    Maintenant je souhaiterais grisé des colonnes selon des checkbox. Si je coche Samedi, je grise toute les colonnes, samedi, si je coche Dimanche, je grise toutes les colonnes Dimanche.
    J'ai mi en place mes checkBox mais après je bloque:
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    public class CalendarWeekViewer extends JPanel implements ActionListener, ItemListener {
     
        Calendar calendar;
        DateFormat dateFormatter;
     
        CalendarWeekTableModel tableModel;
     
        JLabel monthLabel, yearLabel;
        JTable table;
        int anneeChoisit;
        private WeekPanel weekPanel;
     
    	public CalendarWeekViewer(String uneAnnee) {
    		Annee annee = new Annee();
    		anneeChoisit = annee.anneeChoisit(uneAnnee);
    		int anneeDefinitif = 0;
            calendar = Calendar.getInstance();
    		int anneeActuelle;
    		anneeActuelle = calendar.get(Calendar.YEAR);
    		if(anneeActuelle < anneeChoisit){
    			anneeDefinitif = anneeChoisit - anneeActuelle; 
    			calendar.add(Calendar.YEAR, +anneeDefinitif);
    		}else if(anneeActuelle > anneeChoisit){
    			anneeDefinitif = anneeActuelle - anneeChoisit;
    			calendar.add(Calendar.YEAR, -anneeDefinitif);
    		}else{
    			calendar.add(Calendar.YEAR, 0);
    		}
     
            calendar.set(Calendar.MONTH,Calendar.SEPTEMBER); // on se positionne sur le mois de septembre (le début de notre liste de semaines)    	   
            calendar.set(Calendar.WEEK_OF_MONTH, 1); // on se positionne sur la première semaine du mois
            calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); // on se positionne sur le premier jour officiel
     
            dateFormatter = new SimpleDateFormat("MMMM yyyy");
            createComponents();
        }
     
        private void createComponents() {
        	JCheckBox saturdayCheck = new JCheckBox("Samedi");
        	JCheckBox sundayCheck = new JCheckBox("Dimanche");
        	JLabel holidays = new JLabel("Jours Non-ouvrés");
        	JPanel checkBox = new JPanel();
        	checkBox.add(saturdayCheck);
        	checkBox.add(sundayCheck);
     
        	saturdayCheck.addItemListener(this);
        	sundayCheck.addItemListener(this);
            yearLabel = new JLabel("Année : "+anneeChoisit+ "-"+(anneeChoisit+1));
            yearLabel.setFont(new Font(null, Font.BOLD, 20));
     
            monthLabel = new JLabel(getWeekLabel());
            monthLabel.setFont(new Font(null, Font.PLAIN, 18));
            monthLabel.setVerticalAlignment(JLabel.CENTER);
            monthLabel.setHorizontalAlignment(JLabel.CENTER);
     
            tableModel = new CalendarWeekTableModel(calendar);
            table = new JTable((TableModel)tableModel);
            table.setPreferredScrollableViewportSize(new Dimension(1400, 600));
            table.setDefaultRenderer(String.class, new CalendarWeekRenderer());
            table.setRowHeight(200);
            TableColumnModel tableColumnModel = table.getColumnModel();
            for (int i=0; i < tableColumnModel.getColumnCount(); ++i) {
                TableColumn tableColumn = tableColumnModel.getColumn(i);
                tableColumn.setPreferredWidth(200);
            }
     
            JScrollPane tableScrollPane = new JScrollPane(table);
     
            JPanel southPanel = new JPanel(new BorderLayout()); // le panel intermédiaire
     
            // on créé le weekPanel	
            weekPanel = new WeekPanel(this, calendar);
            // on met le weekPanel dans le panel intermédiaire
            southPanel.add(weekPanel, BorderLayout.SOUTH);
            JPanel panneau1 = new JPanel(new BorderLayout());
            panneau1.setPreferredSize(new Dimension(1400, 600));
            panneau1.add(monthLabel, BorderLayout.NORTH);
            panneau1.add(tableScrollPane, BorderLayout.CENTER);
            panneau1.add(southPanel, BorderLayout.SOUTH);
            JPanel panneau3 = new JPanel(new BorderLayout());
            JPanel panneau2 = new JPanel(new BorderLayout());
            panneau2.add(yearLabel, BorderLayout.WEST);
            panneau2.add(checkBox, BorderLayout.EAST);
            panneau3.add(panneau2, BorderLayout.NORTH);
            panneau3.add(panneau1);
            this.add(panneau3);
        }
     
        public void setWeek(Calendar selection) {
        	calendar.setTime( selection.getTime());
                monthLabel.setText(getWeekLabel());
            	tableModel.fireTableStructureChanged(); 
            	weekPanel.updateSelection();
        }
     
        private String getWeekLabel() {
     
        	Calendar calendar = Calendar.getInstance(); // on créé un nouveau calendar pour pas modifier le calendar qui nous sert pour savoir quelle semaine on affiche
        	calendar.setTime(this.calendar.getTime()); // on recopie dedans la date actuellement mise dans le calendar qui ser pour savoir quelle semaine on affiche
     
        	int week = calendar.get(Calendar.WEEK_OF_YEAR); // on récupère le numéro de la semaine
     
            // le premier jour de cette semaine
        	Date premierJour = calendar.getTime();
        	int monthPremierJour = calendar.get(Calendar.MONTH); // bug ici (il y avait int monthPremierJour = calendar.get(Calendar.MONDAY); donc n'importe quoi)!!!
     
            // le dernier jour de cette semaine
        	calendar.add(Calendar.WEEK_OF_YEAR, 1);
        	calendar.add(Calendar.DAY_OF_WEEK, -1);
        	Date dernierJour = calendar.getTime();
     
        	int monthDernierJour = calendar.get(Calendar.MONTH);
     
        	return WeekPanel.getWeekLabel(week, premierJour, dernierJour, monthPremierJour, monthDernierJour); 
        }
     
    	public void actionPerformed(ActionEvent arg0) {
     
    	}
     
    	@Override
    	public void itemStateChanged(ItemEvent arg0) {
     
     
    	}
    }

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

Discussions similaires

  1. Vérifier champs avant d'afficher nouvelle page
    Par phenix1988 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/04/2010, 17h17
  2. Réponses: 5
    Dernier message: 05/11/2009, 10h39
  3. afficher sur une nouvelle page un resultat de combobox
    Par ruza01 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 19/01/2009, 14h03
  4. Afficher un lien dans une nouvelle page
    Par newmar dans le forum Struts 1
    Réponses: 4
    Dernier message: 26/05/2008, 14h06
  5. Link_to_remote afficher nouvelle page
    Par pjmorce dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 09/01/2008, 10h35

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