salut a tous,
je voudrai mettre un canvas dans un JScrollPane mais je n'y parviens pas.
mon but est de dessiner dynamiquement l'organigramme d'un code source de taille inconnue.
une idee?
Version imprimable
salut a tous,
je voudrai mettre un canvas dans un JScrollPane mais je n'y parviens pas.
mon but est de dessiner dynamiquement l'organigramme d'un code source de taille inconnue.
une idee?
Ben la première idée qui me vient c'est :
canvas : AWT
JScrollPane : Swing
Donc pas bon vu que l'on ne peut pas mélanger les composants Swing et AWT.
Donc je dirais utilise un JPanel plutôt qu'un canvas et redéfinie sa méthode paintComponent pour afficher ton organigramme.
Disons plutôt que c'est possible de les mélanger mais que c'est M.A.L. :!:
merci,
je vais tester
Certes! :lol:Citation:
Envoyé par bouye
je n'ai aucun probleme moi en les melangeant ou pas, l'essentiel c'est j'arrive a faire mon tp :lol:
Juste pour rigoler met une JMenuBar contenant des JMenu bien remplis (ou une JComboxBox avec une longue liste d'items) juste au dessus de ton scrollpane et ouvre un des menus (ou ouvre la liste de la combo).
mais je n'arrive toujours pas a avoir des scrollbar.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 class MonPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(0,0,1024,784); } // Pour que ca ne clignotte pas en gris quand ,ca rame : public void update (Graphics g) { paintComponent (g) ; } }
bien sure.Code:maFrame.add(new JScrollPane(panel))
bouye: ca n'as rien donne de particulier, j'avais enleve le canvas et je suis trop fénéant pour refaire.
- Avec JPanel pas besoin de surcharger la méthode update()
- Si tu veux que des scrollbar apparaissent il faut donner une taille (setSize(), voir également setPreferredSize()) à ton panel plus grande que la taille du viewport du scrollpane.
Dans le constructeur du panel :
Code:
1
2
3 Dimension size = new Dimension(1024, 784); setSize(size);
Tes menu même dépliés se seraient affichés SOUS ton canvas. :arrow: pas top.Citation:
bouye: ca n'as rien donne de particulier, j'avais enleve le canvas et je suis trop fénéant pour refaire
merci pour l'info.Citation:
Avec JPanel pas besoin de surcharger la méthode update()
ca ne donne toujours pas de scrollbar. :!:Citation:
Si tu veux que des scrollbar apparaissent il faut donner une taille (setSize(), voir également setPreferredSize()) à ton panel plus grande que la taille du viewport du scrollpane.
Y Sont egocentriques ces composants AWT, font tout pour que l'on voit qu'eux. :lol:Citation:
Envoyé par bouye
Raté, c'était setPreferredSize()
Code:
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 package test; import java.awt.*; import javax.swing.*; /** * <p>Title: </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */ public class TestScroll extends JPanel { public TestScroll() { super(); setPreferredSize(new Dimension(800, 600)); } /** {@inheritDoc} */ @Override public void paintComponent(Graphics graphics) { super.paintComponent(graphics); graphics.setColor(Color.BLACK); graphics.drawLine(0, 0, 800, 600); } /** Self test main. * @param args Arguments from the command-line. */ public static void main(String ...args) { JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); frame.add(new JScrollPane(new TestScroll()), BorderLayout.CENTER); frame.setSize(new Dimension(200, 200)); frame.setVisible(true); } }
meri bouye,
ca marche a merveille.
a+
en fait c'est pas tout a fait fini.
j'ai ajoute mon panel a un JtabbedPane, et la les scrollbars diparaissent. 8O
auriez vous une idee la dessus :?:
C'est ton scroll pane que tu dois ajouter au tabbedpane. Ca ferai une GUI bizarre sinon.
Sinon si le tabbedpane est dans le scroll pane :arrow: pareil setPreferredSize() sur le tabbedpane.
oui c'est ce que j'avais fait, tres mal exprimé seulement.
mais le probleme est le suivant:
:arrow: j'ajoute une JTextArea a mon tabbedPane
:arrow: j'ajoute un scroolPane qui contient mon panel dans le tabbedPane
:arrow: et la les scroll n'apparaissent que lorsque je redimensionne ma frame.
si j'inverse l'ordre d'ajout, tout marche bien(je fais un paintAll() de ma frame).
meme en ajoutant un ChangeListner a la tabbedPane et que je fasse un paintAll dedans, rien ne change.