Partage
  • Partager sur Facebook
  • Partager sur Twitter

JPanel JFrame

Sujet résolu
    14 janvier 2011 à 23:25:30

    Bonjour, svp
    j'ai deux classe NewJFrame et NenJPenel
    NenJPenel contient un graphe
    NewJFrame contient un bouton

    ce que je veux c'est que ,quand j'appuie sur le bouton du NewJFrame ,le graphe de NewJPanle apparaitre
    j'ai essayer :


    dans NenJFrame j'ai mis:

    NewJPanel panel =new NewJPanel();
    panel.show();

    mais ça marche pas

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2011 à 1:07:02

      Plop

      poste tout ton code. merci.
      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2011 à 1:11:59

        Bonjour,

        Un JPanel s'ajoute à un Component comme un autre JPanel ou dans ton cas une JFrame (comme le bouton).
        Tu initialises le panel avec
        panel.setVisible(false);
        
        et dans le controleur du bouton (un ActionListener) tu fais un
        panel.setVisible(true);
        

        Et si jamais t'as besoin de connaitre l'état du panel y'a la fonction isVisible() qui te renvois un boolean, on pourrait imaginé que dans le controleur du bouton tu fasses un
        panel.setVisible(!panel.isVisible());
        
        qui permet d'alterner la vision du panel à chaque appui du bouton.


        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2011 à 1:39:15

          merci beaucoup mais ça marche pas voila le code :
          --------------------------- NewJPanel -------------------------------------
          import java.awt.Color;
          import java.awt.Graphics;
          import java.awt.Graphics2D;
          import java.awt.RenderingHints;
          import java.awt.geom.Ellipse2D;
          import java.awt.geom.Line2D;
          import javax.swing.JFrame;

          public class NewJPanel extends javax.swing.JPanel {
          int[] data = {21, 14, 18, 03, 86, 88, 74, 87, 54, 77,61, 55, 48, 60, 49, 36, 38, 27, 20, 18};
          final int PAD = 20;

          protected void paintComponent(Graphics g) {
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D)g;
          g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
          int w = getWidth();
          int h = getHeight();
          // Draw ordinate.
          g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD));
          // Draw abcissa.
          g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD));
          double xInc = (double)(w - 2*PAD)/(data.length-1);
          double scale = (double)(h - 2*PAD)/getMax();
          // Mark data points.
          g2.setPaint(Color.red);
          for(int i = 0; i < data.length; i++) {
          double x = PAD + i*xInc;
          double y = h - PAD - scale*data[i];
          g2.fill(new Ellipse2D.Double(x-2, y-2, 4, 4));
          }
          }

          private int getMax() {
          int max = -Integer.MAX_VALUE;
          for(int i = 0; i < data.length; i++) {
          if(data[i] > max)
          max = data[i];
          }
          return max;
          }

          public static void main(String[] args) {
          JFrame f = new JFrame();
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          f.add(new NewJPanel());
          f.setSize(400,400);
          f.setLocation(200,200);
          f.setVisible(true);
          }


          public NewJPanel() {initComponents();}


          @SuppressWarnings("unchecked")
          // <editor-fold defaultstate="collapsed" desc="Generated Code">
          private void initComponents() {

          javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
          this.setLayout(layout);
          layout.setHorizontalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addGap(0, 400, Short.MAX_VALUE)
          );
          layout.setVerticalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addGap(0, 300, Short.MAX_VALUE)
          );
          }// </editor-fold>



          }
          -----------------------------------------NewJFrame------------------------------------
          public class NewJFrame0 extends javax.swing.JFrame {

          public NewJFrame0() {initComponents();}

          @SuppressWarnings("unchecked")
          // <editor-fold defaultstate="collapsed" desc="Generated Code">
          private void initComponents() {

          jButton1 = new javax.swing.JButton();

          setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

          jButton1.setText("jButton1");
          jButton1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
          jButton1ActionPerformed(evt);
          }
          });

          javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
          getContentPane().setLayout(layout);
          layout.setHorizontalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addGroup(layout.createSequentialGroup()
          .addContainerGap()
          .addComponent(jButton1)
          .addContainerGap(317, Short.MAX_VALUE))
          );
          layout.setVerticalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
          .addContainerGap(255, Short.MAX_VALUE)
          .addComponent(jButton1)
          .addGap(22, 22, 22))
          );

          pack();
          }// </editor-fold>



          private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
          /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
          /*la je veux le code qui affiche mon panel*/
          NewJPanel panel=new NewJPanel();
          panel.setVisible(true);
          /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
          //setvisible n'a pas marcher
          }


          public static void main(String args[]) {
          java.awt.EventQueue.invokeLater(new Runnable() {
          public void run() {
          new NewJFrame0().setVisible(true);
          }
          });
          }

          // Variables declaration - do not modify
          private javax.swing.JButton jButton1;
          // End of variables declaration

          }
          --------------------------------------------------------------------------------------
          merci d'avance
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            15 janvier 2011 à 13:03:26

            Salut,

            1. Utilise les balises code !
            2. Ton panel n'est ajouté nulle part, il faut qu'il soit enfant de ta frame si tu veux espérer le voir.
            3. Merci de créer des topics avec des descriptions un peu plus de précises que "ça marche pas" ...

            ++
            • Partager sur Facebook
            • Partager sur Twitter
              15 janvier 2011 à 13:40:33

              merci, mais tu ma jamais m'aider et tu pose les mémé remarques a chaque fois donc stp si tu peux m'aider ok sinon laisse moi avec tes remarques
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                16 janvier 2011 à 1:52:17

                Si je te fais les mêmes remarques à chaque fois, il serait peut-être grand temps de les prendre en compte et de lire les conventions et règles du forum.
                Comment veux-tu qu'on t'aide si on n'arrive même pas à lire ton code ?

                Enfin bref, bonne continuation donc.
                • Partager sur Facebook
                • Partager sur Twitter
                  16 janvier 2011 à 19:22:10

                  khiat
                  Sérieusement
                  si BZ prends le temps de te dire ça, c'est qu'il veut t'aider.
                  Alors aide nous à t'aider et ne nous envoie pas chier si on fait des remarques.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 janvier 2011 à 21:50:16

                    Parfaite réponse \o/

                    du coup, même si tu n'a pas édité le sujet pour mettre la coloration syntaxique (bouton "code" dans la creation de message), voici une réponse possible :
                    (je crois que je n'ai pas touché à NewJPanel)

                    import javax.swing.GroupLayout;
                    import javax.swing.JButton;
                    
                    public class NewJFrame extends javax.swing.JFrame {
                    
                    	public NewJFrame() {
                    		initComponents();
                    	}
                    
                    	private void initComponents() {
                    
                    		jButton1 = new JButton();
                    
                    		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
                    
                    		jButton1.setText("jButton1");
                    		jButton1.addActionListener(new java.awt.event.ActionListener() {
                    			public void actionPerformed(java.awt.event.ActionEvent evt) {
                    				jButton1ActionPerformed(evt);
                    			}
                    		});
                    
                                	GroupLayout layout = new GroupLayout(getContentPane());
                    		getContentPane().setLayout(layout);
                    		layout.setHorizontalGroup(
                    				layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    				.addGroup(layout.createSequentialGroup()
                    						.addContainerGap()
                    						.addComponent(jButton1)
                    						.addContainerGap(317, Short.MAX_VALUE))
                    		);
                    		layout.setVerticalGroup(
                    				layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    				.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    						.addContainerGap(255, Short.MAX_VALUE)
                    						.addComponent(jButton1)
                    						.addGap(22, 22, 22))
                    		);
                    
                    		pack();
                    	}
                    
                    
                    
                    	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
                    		NewJPanel panel = new NewJPanel();
                    		panel.setSize(400,400);
                    		panel.setLocation(20,20);
                    		panel.setVisible(true);
                    		getContentPane().add(panel);
                    		repaint();
                    	}
                    
                    
                    	public static void main(String args[]) {
                    		java.awt.EventQueue.invokeLater(new Runnable() {
                    			public void run() {
                    				new NewJFrame().setVisible(true);
                    			}
                    		});
                    	}
                    
                    	// Variables declaration - do not modify
                    	private javax.swing.JButton jButton1;
                    	// End of variables declaration
                    
                    }
                    


                    import java.awt.Color;
                    import java.awt.Graphics;
                    import java.awt.Graphics2D;
                    import java.awt.RenderingHints;
                    import java.awt.geom.Ellipse2D;
                    import java.awt.geom.Line2D;
                    
                    import javax.swing.GroupLayout;
                    import javax.swing.GroupLayout.Alignment;
                    import javax.swing.JFrame;
                    
                    public class NewJPanel extends javax.swing.JPanel {
                    	int[] data = {21, 14, 18, 03, 86, 88, 74, 87, 54, 77,61, 55, 48, 60, 49, 36, 38, 27, 20, 18};
                    	final int PAD = 20;
                    
                    	protected void paintComponent(Graphics g) {
                    		super.paintComponent(g);
                    		Graphics2D g2 = (Graphics2D)g;
                    		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
                    		int w = getWidth();
                    		int h = getHeight();
                    		// Draw ordinate.
                    		g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD));
                    		// Draw abcissa.
                    		g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD));
                    		double xInc = (double)(w - 2*PAD)/(data.length-1);
                    		double scale = (double)(h - 2*PAD)/getMax();
                    		// Mark data points.
                    		g2.setPaint(Color.red);
                    		for(int i = 0; i < data.length; i++) {
                    			double x = PAD + i*xInc;
                    			double y = h - PAD - scale*data[i];
                    			g2.fill(new Ellipse2D.Double(x-2, y-2, 4, 4));
                    		}
                    	}
                    
                    	private int getMax() {
                    		int max = -Integer.MAX_VALUE;
                    		for(int i = 0; i < data.length; i++) {
                    			if(data[i] > max)
                    				max = data[i];
                    		}
                    		return max;
                    	}
                    
                    	public static void main(String[] args) {
                    		JFrame f = new JFrame();
                    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    		f.add(new NewJPanel());
                    		f.setSize(400,400);
                    		f.setLocation(200,200);
                    		f.setVisible(true);
                    	}
                    
                    
                    	public NewJPanel() {initComponents();}
                    
                    
                    	private void initComponents() {
                    
                    		GroupLayout layout = new GroupLayout(this);
                    		this.setLayout(layout);
                    		layout.setHorizontalGroup(
                    				layout.createParallelGroup(Alignment.LEADING)
                    				.addGap(0, 400, Short.MAX_VALUE)
                    		);
                    		layout.setVerticalGroup(
                    				layout.createParallelGroup(Alignment.LEADING)
                    				.addGap(0, 300, Short.MAX_VALUE)
                    		);
                    	}
                    
                    
                    
                    }
                    


                    En gros, le seul truc modifié il me semble, c'est ça (dans l'actionEvent du JButton):

                    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
                    		NewJPanel panel = new NewJPanel(); // on créé l'objet
                    		panel.setSize(400,400); // on lui donne ça taille (j'ai copié ce que tu avais dans le main de NewJPanel qui n'est pas appelé ici)
                    		panel.setLocation(20,20);
                    		panel.setVisible(true);
                    		getContentPane().add(panel); //on récupere la fenêtre où afficher l'objet
                    		repaint(); //redessine le tout, sans, le graphe n'apparait pas (sauf quand tu agrandit la fenetre, mais ça appel repaint().....
                    	}
                    


                    Pour la prochaine fois, c'est très simple :

                    Un titre de sujet le plus clair possible.
                    Expliquer le probleme le plus clairement possible, et si on a besoin de détail pour comprendre, les donner, colorier le code !!!!!! (bouton "code", c'est automatique, ce n'est pas à toi de tout "colorier"...)

                    Bonne soirée...
                    n'hésite pas à dire "non ce n'est pas ça que je voulais" si ce n'est pas ça que tu attendais... ou si tu as d'autres questions bien entendu ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 janvier 2011 à 22:40:20

                      merci beaucoup , je vais voir , merci beaucoup,
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 janvier 2011 à 22:41:21

                        merci ça marcher, mais malheureusement "ce n'est pas ça que je voulais" tu vois mon panel quand tu l'exécute le graphe va apparaitre alors je veux l'appeler comme une fenêtre frame quand j'appuie sur le bouton une autre fenêtre apparus qui est le graphe merci
                        • Partager sur Facebook
                        • Partager sur Twitter

                        JPanel JFrame

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown