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 :

Modification du contenu d'un panel


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Enseignant chercheur retraitée
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant chercheur retraitée

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Modification du contenu d'un panel
    Bonjour,

    Je suis quasi débutante en Java (un mois de tripatouillages intensifs) et je bute depuis deux jours sur le problème suivant :

    J'ouvre une fenêtre principale:
    • contentPane : un JSplitPane (mainContent)
    • a gauche : un Jpanel (treeView qui contient un JTree de rubriques)
    • a droite : un panneau (rubriqueView qui devrait évoluer en fonction de la rubrique sélectionnée dans le menu.

    Ce panneau rubriqueView (JSplitPane) est lui même divisé en deux :
    • en haut : htmlView (une page HTML d'explication)
    • en bas : actionView (un formulaire pour déclencher les actions ultérieures)

    Au démarrage, pas de problème : c'est la rubrique racine qui affiche ses composants.

    Je procède pas à pas. Donc dans un premier temps, j'essaie sur un clic dans le menu de modifier la page d'explication.

    Je n'ai aucune erreur dans l'exécution, mais le panneau htmlView se vide et le reste DESESPEREMENT !!!
    J'ai essayé toutes les combinaisons possibles de validate, revalidate, repaint....

    Merci de votre aide.


    Voici une mouture de mon code (parmi d'autres) :

    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
        public void valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                               menu.getLastSelectedPathComponent();
            if (node == null) return;
            Object currentNode = node.getUserObject();
            currentRubrique = (Rubrique) currentNode;
            changeHtmlView(currentRubrique.getStrUrl());
            // changeActionView();
        }
    	private void changeHtmlView(String strUrl) {
    		htmlView.removeAll();
    		JEditorPane h = new JEditorPane();
    		h.setEditable(false);
    		String str = "resources/html/" + strUrl;
    		URL url = Start.class.getResource(str);
    		try {
    			if (url != null) { h.setPage(url);
    			} else { h.setToolTipText("Aucune information n'est disponible... ");}
            	} catch (IOException e) { System.err.println("Tentative de lecture d'une URL erronée: " + url);}
    		htmlView.add(h);
    		htmlView.validate();
    		actionView.validate();
    		rubriqueView.validate();
    		mainContent.validate();
    		mainContent.repaint();
     
    		System.out.println("htmlView : \n- Displayable:" + htmlView.isDisplayable() + "\n- Enabled:" + htmlView.isEnabled() + "\n- Showing:" + htmlView.isShowing() + "\n- Valid:" + htmlView.isValid() + "\n- Visible:" + htmlView.isVisible());
     
    		System.out.println("ActionView : \n- Displayable:" + actionView.isDisplayable() + "\n- Enabled:" + actionView.isEnabled() + "\n- Showing:" + actionView.isShowing() + "\n- Valid:" + actionView.isValid() + "\n- Visible:" + actionView.isVisible());
     
    		System.out.println("rubriqueView : \n- Displayable:" + rubriqueView.isDisplayable() + "\n- Enabled:" + rubriqueView.isEnabled() + "\n- Showing:" + rubriqueView.isShowing() + "\n- Valid:" + rubriqueView.isValid() + "\n- Visible:" + rubriqueView.isVisible());
     
    		System.out.println("mainContent : \n- Displayable:" + mainContent.isDisplayable() + "\n- Enabled:" + mainContent.isEnabled() + "\n- Showing:" + mainContent.isShowing() + "\n- Valid:" + mainContent.isValid() + "\n- Visible:" + mainContent.isVisible());
     
    		}
    Et les affichages de contrôle pour cette version :
    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
    htmlView : 
    - Displayable:true
    - Enabled:true
    - Showing:true
    - Valid:true
    - Visible:true
    ActionView : 
    - Displayable:true
    - Enabled:true
    - Showing:true
    - Valid:true
    - Visible:true
    rubriqueView : 
    - Displayable:true
    - Enabled:true
    - Showing:true
    - Valid:true
    - Visible:true
    mainContent : 
    - Displayable:true
    - Enabled:true
    - Showing:true
    - Valid:true
    - Visible:true

  2. #2
    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
    En même temps, sans nous montrer comment tu as construit ton GUI, on va avoir du mal à t'aider. Le code que tu nous montré semblant dans l'ensemble correct, cela signifie que la merdouille se trouve ailleurs.

    Montre nous donc comment tu as ajouté les composant les uns dans les autres, quels layouts tu as utilisé et ainsi de suite.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Enseignant chercheur retraitée
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant chercheur retraitée

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    J'ai mis du temps, mais j'étais partie déjeuner !!!

    Le createAndShowGUI()
    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
    private static void createAndShowGUI() {
          /** AFFICHAGE PRINCIPAL */
            if (useSystemLookAndFeel) {
                try {
                    UIManager.setLookAndFeel(
                        UIManager.getSystemLookAndFeelClassName());
                } catch (Exception e) {
                    System.err.println("Problème avec le SystemLookAndFeel.");
                }
            }
     
            UIManager.put("swing.boldMetal", Boolean.FALSE);
            JFrame.setDefaultLookAndFeelDecorated(false);
     
            //Création et initialisation de la fenêtre principale.
            JFrame mainWindow = new JFrame("DETCOL : Administration");
            mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            mainWindow.setLocation(200,200);
            mainWindow.setSize(840,640);
            mainWindow.setIconImage(Toolkit.getDefaultToolkit().getImage("resources/images/logo_ctlf_pti.gif"));
     
            //Addition d'un contenu        
            JSplitPane content = new MainContent().getMainContent();
            mainWindow.setContentPane(content);
            //Affichage de la fenêtre.
            mainWindow.pack();
            mainWindow.setVisible(true);
            }
    Le main Content
    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
        public static JSplitPane mainContent;
        private JPanel treeView;
        private JScrollPane htmlView;
        private JPanel actionView;
        private JSplitPane rubriqueView;
     
        private ArrayList<Rubrique> rubriques = new ArrayList<Rubrique>();
        private Rubrique currentRubrique;
        private JTree menu;
        private String strUrl;
     
        public  MainContent() {
            super();
                /** TREEVIEW */
            rubriques = Utils.readMenuFile("admin/resources/inits/mainMenu");
            menu = new MenuTree(rubriques).getMenu();
              // Le listener d'une sélection.
            menu.addTreeSelectionListener(this);
            treeView = new JPanel();
            treeView.add(menu);
     
    //        Au démarrage, on affiche la rubrique racine
            currentRubrique = rubriques.get(0);
     
                /** HTMLVIEW */        
            strUrl = currentRubrique.getStrUrl();
            htmlView = Utils.createHtmlView(strUrl);
     
                /** ACTIONVIEW */
    //        new PanRacine();
                actionView = new PanRacine().getActionView();
     
     
            /** RUBRIQUEVIEW */
            rubriqueView = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
            rubriqueView.setTopComponent(htmlView);
            rubriqueView.setBottomComponent(actionView);
            rubriqueView.setDividerSize(2);
            rubriqueView.setDividerLocation(300);
     
            /** On pose le tout dans le dernier splitpane". */
            mainContent = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
            mainContent.setRightComponent(rubriqueView);
            mainContent.setLeftComponent(treeView);
            Dimension minimumSize = new Dimension(100, 50);
            treeView.setMinimumSize(minimumSize);
            rubriqueView.setMinimumSize(minimumSize);
            mainContent.setDividerLocation(200);
            mainContent.setDividerSize(2);
            mainContent.setPreferredSize(new Dimension(800, 600));
            mainContent.setResizeWeight(0);
     
            return ;
            }

  4. #4
    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
    Le problème vient du fait que ton htmlView est un JScrollPane.

    En effet, le JScrollPane ne fonctionne pas comme les autres conteneurs, et pour lui ajouter un composant il ne faut pas utiliser la méthode add. Il faut soit passer le composant en paramètre du constructeur du JScrollPane, soit utiliser la méthode setViewportView.

    Cf le tuto oracle portant sur le JScrollPane: http://download.oracle.com/javase/tu...crollpane.html
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Enseignant chercheur retraitée
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant chercheur retraitée

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Merci infiniment : enfin, j'ai un os à ronger !
    Il me faut quand même un peu de temps pour le marquer comme résolu.

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

Discussions similaires

  1. Modification du contenu d'une page d'un repertoire virtuel
    Par celine_tr dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 24/08/2006, 16h17
  2. [C#]Comment effacer le contenu d'un panel !!
    Par drekkii dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/01/2006, 08h45
  3. Réponses: 2
    Dernier message: 28/12/2005, 16h53
  4. [vb6 et access] problème de modification de contenu de champ
    Par dj_tess dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/12/2005, 19h26
  5. Modification du contenu d'un Request() ??
    Par nesbla dans le forum ASP
    Réponses: 5
    Dernier message: 05/07/2005, 14h31

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