bonjour
je débute en swing, j'utilise un JtabbedPane dans mon appli,
j'ajoute sans souci des onglets avec la méthode add ou addtab.
J'ai donc creer sur mon premier onglet un bouton qui me permet de creer des onglet dynamiquement.
Lorsque je click sur ce boutton ca passe dans une methode qui ajoute un onglet mais le hic c'est que l'onglet ne s'affiche pas,
j'ai essayer les methodes repaint() etc.. mais rien n'y fait
j'ai affiché des debug avant et apres pour etre sur qu il passe bien dans ma methode lors du click.
j'ai testé de mettre le code d'ajout d'un onglet dans la methode init lorsque j'affiche ma frame la premiere fois et l'onglet s'affiche bien. par contre si je deporte le code dans une methode ca marche pas.
Surement un souci de rafraichissement mais je my connais pas trop donc je sais pas trop quoi raffraichir.
merci
voici le code:
j'ai une classe qui initialise mes actions (classe controller qui contient une global vers ma view)
initialisation de l'action dans l'init du controller avec la methode appelé, jusque la rien de compliqué
apres tout cela j'appel donc view.createUI() qui me crée ma vue avec mon boutton sur lequel l'action est bien declaré
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 newMappingAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { ActionExecutor.getInstance().queue(new fr.openmodel.action.Action() { public void doIt(ActionContext context, Object view) { newMapping(); } }, new Object()); } }; private void newMapping() { view.addOnglet(); }
j'ai une global dans la classe view qui est : updatePlanTabbedPane qui gere mes onglets et lors du click sur le boutton cela appel donc la methode newMapping du controller qui appel addOnglet() dans ma view:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 JButton newMapping = new JButton(controller.getMappingAction()); newMapping.setText(UpdatePlanResourceBundle.NEW_MAPPING_LABEL); ButtonPanel buttonPanel2 = new ButtonPanel(); buttonPanel2.addButton(newMapping); mappingsPanel.add(buttonPanel2); updatePlanPanel.add(mappingsPanel, c2);
voici view.addOnglet();
j'y declare un JPanel qui va contenir les objets de mon onglet, pour mes tests pour le moment je met juste une textField sur l'onglet
ensuite l'appel de updatePlanTabbedPane.addTab(UpdatePlanResourceBundle.NEW_MAPPING_LABEL, ongletMappingVide);
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 GridBagConstraints c = new GridBagConstraints(); JPanel ongletMappingVide = new JPanel(); ongletMappingVide.setBorder(javax.swing.BorderFactory.createTitledBorder("")); StyleManager.applyStyle(StyleManager.BASIC_COMPONENT, ongletMappingVide, c); StyleManager.applyStyle(StyleManager.SECOND_LEVEL_CONTAINER, ongletMappingVide, null); ongletMappingVide.setLayout(new GridBagLayout()); JTextField field2 = new JTextField(); field2.setDocument(model.getNameModel()); StyleManager.applyStyle(StyleManager.FORM_TEXTFIELD, field2, c); c.gridx = 1; c.gridy = 0; c.anchor = java.awt.GridBagConstraints.WEST; c.gridwidth = 1; c.fill = java.awt.GridBagConstraints.HORIZONTAL; c.weightx = 1; ongletMappingVide.add(field2, c); updatePlanTabbedPane.addTab(UpdatePlanResourceBundle.NEW_MAPPING_LABEL, ongletMappingVide);
ne fait rien a ma vu principal, l'ajout des onglets ne se fait pas, j'ai ajouté des system.out pour voir s'il rentrai bien partout et il arrive bien jusqu'a la fin de addOnglet() d'ailleurs quand j'affiche le nombre d'onglet présent j'ai bien 1;2;3 etc.. a chaque click
donc ma question etait existe t il une méthode qui me permettrai d'afficher mon Onglet? j'ai essayer repaint sur la frame, sur l'objet JtabbedPane...
autres solution?
merci
Partager