[Swing]Jcomponent personnalisé dans un Jpanel

Jcomponent personnalisé dans un Jpanel [Swing] - Java - Programmation

Marsh Posté le 16-02-2006 à 17:27:35    

Bonjour,
 
après avoir lu pas mal de tutoriaux et testé des tonnes de solutions, je viens chercher de l'aide car il y a un truc bête que je n'ai pas dû comprendre dans toutes ces docs...
 
Mon problème : je souhaite dessiner des objets graphiques (des points par exemple) sur un Jpanel (qui à terme comportera une image en arrière plan, mais chaque chose en son temps).
 
Pour le moment j'en suis réduit à tester des bouts de code pour comprendre ce qu'il se passe...  
 
le code de mon composant point :
 

Code :
  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.awt.Graphics2D;
  4. import java.awt.geom.Ellipse2D;
  5. import javax.swing.JComponent;
  6. public class GraphPoint extends JComponent {
  7.  Ellipse2D.Double point = null;
  8.  Color color = null;
  9.  public GraphPoint(int _x, int _y, Color _color) {
  10.   color = _color;
  11.   point = new Ellipse2D.Double(_x, _y, 20, 20);
  12.  }
  13.  public void move(int _x, int _y) {
  14.   point.x = _x;
  15.   point.y = _y;
  16.  }
  17.  protected void paintComponent(Graphics g) {
  18.   Graphics2D g2d = (Graphics2D) g;
  19.   g2d.setColor(color);
  20.   g2d.fill(point);
  21.  }
  22. }


 
et mon code pour mettre un point dans le panel :
 
 
 

Code :
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.FlowLayout;
  5. import java.util.ArrayList;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. public class CopyOftestVisu {
  9. private ArrayList<GraphPoint> graphPoints = new ArrayList<GraphPoint>(); // @jve:decl-index=0:
  10. private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="288,144"
  11. private JPanel jContentPane = null;
  12. private JPanel jPanel = null; // @jve:decl-index=0:visual-constraint="203,157"
  13. /**
  14.  * This method initializes jFrame
  15.  *  
  16.  * @return javax.swing.JFrame
  17.  */
  18. private JFrame getJFrame() {
  19.  if (jFrame == null) {
  20.   jFrame = new JFrame();
  21.   jFrame.setSize(new Dimension(400, 400));
  22.   jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
  23.    public void windowClosing(java.awt.event.WindowEvent e) {
  24.     jFrame.dispose();
  25.    }
  26.   });
  27.  }
  28.  return jFrame;
  29. }
  30. private void addPoint(int _x, int _y, Color color) {
  31.  GraphPoint pt1 = new GraphPoint(_x, _y, color);
  32.  graphPoints.add(pt1);
  33.  jFrame.getContentPane().add(pt1, BorderLayout.CENTER);
  34. }
  35. public static void main(String[] args) {
  36.  CopyOftestVisu app = new CopyOftestVisu();
  37.  //frame
  38.  app.getJFrame();
  39.  //panel
  40.  JPanel panel = new JPanel();
  41.  panel.setLayout(new FlowLayout());
  42.  panel.setBackground(Color.BLUE);
  43.  app.getJFrame().add(panel);
  44.  //ajout d'un point au panel : ne fonctionne pas
  45.  GraphPoint pt1 = new GraphPoint(100, 100, Color.RED);
  46.  app.graphPoints.add(pt1);
  47.  panel.add(pt1);
  48.  //ajout d'un point à la frame : fonctionne
  49. //  app.addPoint(150, 150, Color.RED);
  50.  app.getJFrame().setVisible(true);
  51. }
  52. }


 
Le point s'affiche bien lorsque je le met dans la Jframe, mais pas quand je le met dans je Jpanel...
quel est le problème avec le panel ? Problème de layout ?

Reply

Marsh Posté le 16-02-2006 à 17:27:35   

Reply

Sujets relatifs:

Leave a Replay

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