Insertion d'une JInternalFrame dans un JScrollPane

Insertion d'une JInternalFrame dans un JScrollPane - Java - Programmation

Marsh Posté le 15-05-2004 à 16:34:55    

Bonjour,
 
J'ai quelques difficultés pour faire apparaitre correctement une JInternalFrame dans un JScrollPane, et lorsque la JInternalFrame apparait, les ascenseurs du JScrollPane n'apparaissent pas lorsque je déplace l'InternalFrame.
 
Quelle est donc la clé de ce mystère ?  :sweat:


Message édité par voleurdecarottes le 15-05-2004 à 16:36:57
Reply

Marsh Posté le 15-05-2004 à 16:34:55   

Reply

Marsh Posté le 15-05-2004 à 16:40:08    

t'a bien mis tes setVisible ?


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 15-05-2004 à 16:40:37    

Oui.
 
Ce qui me chagrine, c'est que j'arrive très bien à insérer des JTextArea dans des JScrollPane.
 
Je viens tout juste de voir l'existence des JDesktopPane, la solution est peut-être là, qui sait...


Message édité par voleurdecarottes le 15-05-2004 à 17:02:30
Reply

Marsh Posté le 15-05-2004 à 17:06:24    

je sais pas si ca va t'aider, mais justement, les JInternalFrame doivent etre ajoutées a un DesktopPane normalement, lui meme ajouté a la frame principale

Reply

Marsh Posté le 15-05-2004 à 17:09:15    

Très bien, je m'engage de ce côté là.  :jap:  
 
Vive les débutants en java !!!

Reply

Marsh Posté le 15-05-2004 à 17:21:50    

Bon, il y a une JInternalFrame dans le JDesktopPane. Mais pas moyen d'avoir des ascenseurs sur le JDesktopPane. SOS!!!

Reply

Marsh Posté le 15-05-2004 à 19:16:05    

Quelqu'un a-t-il une meilleure idée que la suivante: créer une loupe qui diviserait par 2 la taille de la JInternalFrame et de tout ce qui se trouverait à l'intérieur, pour l'avoir en entier sur l'écran ?

Reply

Marsh Posté le 17-05-2004 à 11:21:02    

Tout dépend de ca que tu as dans ton JInternalFrame.
Images -> simple
Tout plein de contrôles -> me paraît hard

Reply

Marsh Posté le 17-05-2004 à 23:54:12    

voleurdecarottes a écrit :

Bon, il y a une JInternalFrame dans le JDesktopPane. Mais pas moyen d'avoir des ascenseurs sur le JDesktopPane. SOS!!!


 
c'est pas prevu effectivmeent mais dans windows non plus y a pas de scrollpane dans le bureau hein;)

Reply

Marsh Posté le 18-05-2004 à 08:46:04    

JDesktopPane n'a rien a voir avec le bureau Windows.
C'est juste une fenêtre spéciale qui peux en contenir d'autre la fenêtre.
Dans les applications MDI windows, il est possible d'avoir des ascensseurs. Comment ? ça dépend de ce que tu utilise pour programmer.

Reply

Marsh Posté le 18-05-2004 à 08:46:04   

Reply

Marsh Posté le 18-05-2004 à 10:27:11    

Le problème a été résolu avec un JDesktopPane. (Merci beaucoup tout le monde) Maintenant j'ai un 2ème problème  :pt1cable: . Le voici...:
 
Dans une JInternalFrame, j'ai mis un JScrollPane. Cela devrait permettre d'insérer des composants un peu partout et d'y accéder même lorsque la JInternalFrame est toute petite.
 
Comme ils disent dans l'API: JSCrollPane "Provides a scrollable view of a lightweight component".
 
A ce qu'ils disent aussi, pour les composants JTable, JList, JTree, JTextArea, et JEditorPane, le scroll apparait tout seul si besoin après un setAutoscrolls(true);
 
Pour tous les autres composants, il faut rajouter quelques lignes de code (voir la méthode setAutoscrolls()). Or j'ai beau écrire ces lignes, le scroll n'apparait pas lorsque j'insère un JButton dans le JScrollPane.
 
Quel est la réponse à ce mystère ?


Message édité par voleurdecarottes le 18-05-2004 à 10:33:23
Reply

Marsh Posté le 18-05-2004 à 10:41:37    

J'ai rarement besoin de faire scroller un bouton  :lol:  
 
Sans rire, tu devrais mettre un seul JPanel dans le JSCrollPane et ajouter  
les controles au JPanel. Ton JScrollPane n'a qu'un composant à scroller

Reply

Marsh Posté le 18-05-2004 à 10:43:10    

Ah béh voilà la solution! Net et concis.
 
Merki !

Reply

Marsh Posté le 19-05-2004 à 08:16:24    

Nouveau rebondissement: Effectivement les composants apparaissent bien, mais toujours pas le scroll!
 
(Résumé de l'épisode précédent: j'ai une JInternalFrame avec un JScrollPane qui contient un JPanel dans lequel viennent s'ajouter des composants du genre JButtons, JTextArea...)
 
QQn pour m'aider?

Reply

Marsh Posté le 19-05-2004 à 09:02:52    

Ne met pas autoscroll à true pour le JPanel sinon tu court-circuites le JScrollPane.
Il faut que le JPanel croit qu'il a tout l'espace qu'il souhaite.

Reply

Marsh Posté le 19-05-2004 à 09:20:37    

J'essaye ce soir :jap:

Reply

Marsh Posté le 19-05-2004 à 15:21:45    


 
 :cry: J'ai essayé ce midi, ça marche pas!!!  :cry:  
Un petit bout de code serait le bienvenu...  :jap:

Reply

Marsh Posté le 19-05-2004 à 17:05:05    


 
Qqch comme ça :  
 

Code :
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class TestScroll extends JPanel
  4. {
  5. public TestScroll()
  6. {
  7.  this.initialize();
  8. }
  9. private void initialize()
  10. {
  11.  this.setLayout(new BorderLayout());
  12.  JPanel scrollPanel = new JPanel(new BorderLayout());
  13.  scrollPanel.setMinimumSize(new Dimension(200, 200));
  14.  scrollPanel.setMaximumSize(new Dimension(400, 400));
  15.  scrollPanel.setPreferredSize(new Dimension(250, 250));
  16.  JLabel label = new JLabel("Coucou" );
  17.  label.setHorizontalAlignment(SwingConstants.CENTER);
  18.  scrollPanel.add(label, BorderLayout.CENTER);
  19.  this.add(new JScrollPane(scrollPanel), BorderLayout.CENTER);
  20. }
  21. public static void main(String[] args)
  22. {
  23.  JFrame frame = new JFrame("TestScroll" );
  24.  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  25.  frame.setBounds(50, 50, 100, 100);
  26.  frame.setContentPane(new TestScroll());
  27.  frame.setVisible(true);
  28. }
  29. }


 
Tout se passe dans la méthode initialize() de TestScroll.
 
Un petit coup de 'javac TestScroll.java' suivi d'un 'java TestScroll' et ça roule ma poule !!!!
 
Et je ne veux pas lire de "ça marche pas !". Ca compile et ça s'exécute comme il faut avec l'effet attendu.  :D
 
Par contre je pars en congés 4 jours. Donc pas d'aide de ma part avant Lundi Prochain  :cry:


Message édité par pascal34 le 19-05-2004 à 17:07:19
Reply

Marsh Posté le 24-05-2004 à 09:49:45    

Tant qu'y'aura des mouches Mister Pascal34, j'essaierai ton code dès que possible.

Reply

Marsh Posté le 24-05-2004 à 11:45:10    

Oui il tourne ce code !
 
Mais... (y'a un mais):  :ange:  
 
Le JLabel "coucou" se redimensionne selon la taille de la JFrame ! Cela est dû au layout. Or le futur utilisateur de mon programme doit pouvoir placer les composants à l'aide de la souris, où il le souhaite. (donc avec la méthode setBounds(), donc pas de layout !)
 
Je sais pas si je me suis bien fait comprendre, mon programme (notre programme!) sera un éditeur d'interface homme-machine.  :jap:  
 
Mon cher Pascal34, merci pour ton code, mais en aurais-tu un autre qui réponde au problème sus-énoncé?  :bounce:


Message édité par voleurdecarottes le 24-05-2004 à 11:47:52
Reply

Marsh Posté le 24-05-2004 à 14:57:03    

voleurdecarottes a écrit :


Le JLabel "coucou" se redimensionne selon la taille de la JFrame ! Cela est dû au layout.  


 
C'est en partie vrai. C'est dû aussi au

Code :
  1. label.setHorizontalAlignment(SwingConstants.CENTER);


qui centre le label horizontalement.
 
Je suis au boulot et j'ai pas le temps de te pondre un autre code, MAIS (car il ya un mais :ange:) essaye de voir le AbsoluteLayout. Ca permet de positionner un  controle en lui donnat une position (qu'il gardera) sur le panel


Message édité par pascal34 le 24-05-2004 à 14:57:58
Reply

Marsh Posté le 24-05-2004 à 17:21:20    

Arf, AbsoluteLayout n'en reste pas moins un Layout!  :sweat:  
 
Malgré tout, cela est fort sympathique de ta part.  :jap:  
 
Si je termine ce programme un jour, je te l'enverrai si tu veux! (Tu as le droit de dire non!)  :lol:


Message édité par voleurdecarottes le 24-05-2004 à 17:24:53
Reply

Marsh Posté le 24-05-2004 à 17:25:03    

voleurdecarottes a écrit :

Si je termine ce programme un jour, je te l'enverrai si tu veux! (Tu as le droit de dire non!)


 
Pourquoi pas. Je pourrais voir la bébête dont il est ici question :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed