Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1486 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Probleme d'affichage d'un JComponent redefini.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme d'affichage d'un JComponent redefini.

n°1080458
Chronoklaz​m
Posté le 12-05-2005 à 01:36:25  profilanswer
 

Salut voila j'ai petit probleme lorsque je veux afficher un JComponent que j'ai redefini et que j'ai mis dans ma JFrame ... ca s'affiche pas. Mais lorsque je le met dans une TabbedPane puis je pet la TabbedPane dans la JFrame ca marche, bref y a des blagues quoi.
 

Code :
  1. /*
  2. * GUI.java
  3. *
  4. * Created on 6 mai 2005, 01:18
  5. */
  6. package graphisme;
  7. import java.awt.*;
  8. import java.awt.event.*;
  9. import javax.swing.*;
  10. import javax.swing.border.*;
  11. /**
  12. *
  13. * @author Chronk
  14. */
  15. public class GUI extends JFrame{
  16.     private JTextField saisieFonction = new JTextField(15);
  17.  
  18.     private JTextArea resume;
  19.    
  20.     public GUI() {
  21.        
  22.        
  23.         // Fermer l'application quand on ferme la fenêtre
  24.         // *********** A REMPLIR
  25.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  26.         setVisible(true);
  27.        
  28.         // Pour le moment, on utilise un WindowAdapter :
  29.         addWindowListener(new WindowAdapter() {
  30.             public void windowClosing(WindowEvent e) {
  31.                
  32.                 // *********** A REMPLIR
  33.                 System.exit(0);
  34.             }
  35.         });
  36.        
  37.         // Positionnement de la fenêtre
  38.         Toolkit tk = Toolkit.getDefaultToolkit();
  39.         Dimension d = tk.getScreenSize();
  40.         int hauteurEcran = d.height;
  41.         int largeurEcran = d.width;
  42.         setSize(largeurEcran/2, hauteurEcran/2);
  43.         setLocation(largeurEcran/4, hauteurEcran/4);
  44.        
  45.         /////////////////////////////////////////////////
  46.         // Panel pour entrer une fonction
  47.         // (avec un FlowLayout)
  48.         JPanel panelFonction = new JPanel();
  49.         panelFonction.setLayout(new FlowLayout());
  50.         Box boite = Box.createVerticalBox();
  51.         boite.add(new JLabel("Auteur" ));
  52.         boite.add(saisieFonction);
  53.         panelFonction.add(boite);
  54.         /////////////////////////////////////////////////
  55.         // BOUTON Tracer
  56.         JButton boutonTracer = new JButton("Tracer" );
  57.         boutonTracer.addActionListener(new ActionListener() {
  58.             public void actionPerformed(ActionEvent e) {
  59.                
  60.             }
  61.         });
  62.         boutonTracer.setToolTipText("Cliquez sur ce bouton pour lancer la recherche." );
  63.         panelFonction.add(boutonTracer);
  64.         ////////////////////////////////////////////////////////////////////////
  65.         // AGENCEMENT DES PANELS
  66.         JPanel all = new JPanel();
  67.         all.setLayout(new FlowLayout());
  68.        
  69.        
  70.         JPanel pourEcran = new JPanel();
  71.         pourEcran.setLayout(new FlowLayout());
  72.         MonPanel ecran = new MonPanel();
  73.         pourEcran.add(ecran);
  74.        
  75.         all.add(ecran);
  76.        
  77.         //all.add(panelFonction);
  78.        
  79.        
  80.         ////////////////////////////////////////////////////////////////////////
  81.         // CREATION DES TABBEDPANE - ONGLETS
  82.         /*
  83.         JTabbedPane tabbedPane = new JTabbedPane();
  84.        
  85.         ///Component panel2 = new JPanel();
  86.          
  87.         MonPanel ecran = new MonPanel();
  88.         tabbedPane.addTab("WAW", null, ecran , "Ecran" );
  89.         */
  90.        
  91.        
  92.         this.add(all);
  93.        
  94.         this.pack();
  95.         this.setVisible(true);
  96.     }
  97.    
  98.     public static void main(String[] args) {
  99.         GUI fenetre = new GUI();
  100.     }
  101.    
  102. } // GUILivre
  103. class MonPanel extends JComponent {
  104.        
  105.         /** variable de classe contenant l'image à afficher en fond */
  106.         private Image bg;
  107.        
  108.        
  109.         /** Surcharge de la fonction paintComponent() pour afficher notre image */
  110.          public void paintComponent(Graphics g) {
  111.            
  112.                 g.drawImage(bg,0,0,null);
  113.                // g.draw3DRect(10, 10, 70,  7, false);
  114.                 //L'origine
  115.                 g.drawLine(5, 5,10,10);
  116.                 g.drawLine(10, 5,10,10);
  117.                 g.drawLine(20, 50,10,10);
  118.                 g.drawLine(30, 5,10,10);
  119.                 g.drawOval(50, 50, 100, 200);
  120.          }
  121. }


 
Et donc comme j'ai dit plus haut si je passe par un JtabbedPane ca marche ... kesako ?
 
EDIT : Bon la question serait plutot ... Sachant que je peux mettre des JPanel dans un JPanel, pouquoi quand je redefini un JPanel et que je le mette dans un VRAI JPanel ca marche pas ?


Message édité par Chronoklazm le 12-05-2005 à 02:17:19

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
mood
Publicité
Posté le 12-05-2005 à 01:36:25  profilanswer
 

n°1080589
Cherrytree
cn=?
Posté le 12-05-2005 à 10:37:47  profilanswer
 

Déjà, change this.add(all); par getContentPane().add(all);.


---------------
Le site de ma maman
n°1081108
Chronoklaz​m
Posté le 12-05-2005 à 16:48:46  profilanswer
 

Pas genial ton truc ... ca change rien.


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1081117
Cherrytree
cn=?
Posté le 12-05-2005 à 16:51:56  profilanswer
 

Chronoklazm a écrit :

Pas genial ton truc ... ca change rien.


Peut-être.
 
Cependant, c'est une faute GRAVE de moins.
 
Adieu.


---------------
Le site de ma maman
n°1081125
Chronoklaz​m
Posté le 12-05-2005 à 16:55:58  profilanswer
 

Pourquoi c'est une faute GRAVE stp ?


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1081195
Cherrytree
cn=?
Posté le 12-05-2005 à 17:28:20  profilanswer
 

Tiens.

Code :
  1. package graphisme;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class GUI extends JFrame {
  5.     public GUI() {
  6.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  7.         JPanel all = new JPanel();
  8.         all.add(new MonPanel());
  9.         getContentPane().add(all);
  10.         pack();
  11.         setVisible(true);
  12.     }
  13.     public static void main(String[] args) {
  14.         new GUI();
  15.     }
  16. }
  17. class MonPanel extends JComponent {
  18.     public void paintComponent(Graphics g) {
  19.         super.paintComponent(g);
  20.         g.setColor(Color.black);
  21.         g.drawLine(5, 5, 10, 10);
  22.         g.drawLine(10, 5, 10, 10);
  23.         g.drawLine(20, 50, 10, 10);
  24.         g.drawLine(30, 5, 10, 10);
  25.         g.drawOval(50, 50, 100, 200);
  26.     }
  27.     public Dimension getPreferredSize() {
  28.         return new Dimension(300, 200);
  29.     }
  30. }


---------------
Le site de ma maman
n°1081233
Chronoklaz​m
Posté le 12-05-2005 à 17:49:32  profilanswer
 

Ah  .... d'accord en gros si je redefini pas une methode getPreferredSize() ca marche po.
 
Bon bein c'est nikel, merci beacoup.


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1081706
the real m​oins moins
Posté le 13-05-2005 à 01:27:21  profilanswer
 

cherrytree > un pte explication steplé ?
quid s'il s'agissait d'un composant à taille variable?
à vrai dire, j'ai jamais pigé ce qu'il fallait attendre de la "preferred size" [:pingouino]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1081709
the real m​oins moins
Posté le 13-05-2005 à 01:34:51  profilanswer
 

chronoklazm > je te conseille d'aller voir la source de cette methode sur jcomponent, ou, à tout le moins, d'en lire la javadoc.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1081712
the real m​oins moins
Posté le 13-05-2005 à 01:55:21  profilanswer
 

hmmm, j'allais te dire qu'il valait meme mieux utiliser un layoutmanager, mais je vois que t'en utilises un..
 
NRAYNAUD, LE TUTO §§§§


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 13-05-2005 à 01:55:21  profilanswer
 

n°1081834
Cherrytree
cn=?
Posté le 13-05-2005 à 09:45:50  profilanswer
 

Concrêtement, la property preferredSized d'un Container est issu du layout manager utilisé. Le layout manager calcule la dimension du Container étant donné les Components qui lui ont été ajouté. Pour n'importe quel layout manager, la dimension d'un objet MonPanel est [0, 0], car en terme de layout management, il ne contient rien. Dans la solution que je propose, je fixe arbitrairement la dimension de l'instance de MonPanel. La bonne solution est, à mon sens, de créer un layout manager custom.


---------------
Le site de ma maman
n°1082063
the real m​oins moins
Posté le 13-05-2005 à 12:02:47  profilanswer
 

un UI Delegate, plutot non? :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1082183
Cherrytree
cn=?
Posté le 13-05-2005 à 13:44:00  profilanswer
 

ça revient presque au même.


---------------
Le site de ma maman

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Probleme d'affichage d'un JComponent redefini.

 

Sujets relatifs
[javascript] probleme onmouseover avec frameProbleme de requete sous access svp aide
problème de décalage aléatoireProbleme javascript avec safari
mail php problème...Probleme avec la fonction onunload
pb affichage iframe sous ie 5.5problème de get sur les chaines de caracteres (buffer)
[Résolu] [Cewolf] pb affichage, échelle sur l'axe des abscisses ?Problème ftp
Plus de sujets relatifs à : Probleme d'affichage d'un JComponent redefini.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR