[ALG2] TD5 Swing Matisse - probleme

Voir le sujet précédent Voir le sujet suivant Aller en bas

[ALG2] TD5 Swing Matisse - probleme

Message  trikman le Mar 28 Fév 2012, 22:15

Bonjour,

j'aimerais savoir comment ajouter un Jpanel(par exemple) dans un JFrame , chacune étant 2 classes distinctes .

j'ai donc créé les 2 classes séparements avec matisse et j'aimerait , integrer mon Jpanel à mon JFrame , mais ca ne fonctionne pas ... j'ai fait beaucoup de recherche mais je ne trouve rien de tres utile ou qui fonctionne .

voici les 2 codes , tres basiques pour l'exemple .


Code:
public class NewJFrame extends javax.swing.JFrame {

    /**
    * Creates new form NewJFrame
    */
    public NewJFrame() {
        this.pan= new NewJPanel();
        pan.setVisible(rootPaneCheckingEnabled);
        this.add(this.pan);  // je met ces instructions avant car il y a un pack() dans initComponents
                                // ce pendant meme si je les met apres et que je refait un pack() ou non
                              //, ca ne fonctionne pas non plus
        initComponents();
       
    }

    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().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)
        );

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

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        /*
        * Set the Nimbus look and feel
        */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
        * If Nimbus (introduced in Java SE 6) is not available, stay with the
        * default look and feel. For details see
        * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
        * Create and display the form
        */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    private NewJPanel pan;
   
    // Variables declaration - do not modify
    // End of variables declaration
}

Code:
public class NewJPanel extends javax.swing.JPanel {

    /**
    * Creates new form NewJPanel
    */
    public NewJPanel() {
        initComponents();
    }

    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        setBorder(javax.swing.BorderFactory.createTitledBorder("defzef"));

        jButton1.setText("jButton1");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(107, 107, 107)
                .addComponent(jButton1)
                .addContainerGap(206, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(129, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(122, 122, 122))
        );

        getAccessibleContext().setAccessibleParent(this);
    }// </editor-fold>
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    // End of variables declaration
}

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  pbt le Mer 29 Fév 2012, 08:01

Si tu utilises Matisse, c'est mieux d'ajouter ton JPAnel via Matisse ... Il faut que tu ajoutes ton composant à ta palette de composants. Il suffira alors de le glisser/déposer dans ton JFrame.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  trikman le Mer 29 Fév 2012, 17:12

j'ai regler le probleme . c'etait une histoire de pack() ...

Si tu utilises Matisse, c'est mieux d'ajouter ton JPAnel via Matisse ... Il faut que tu ajoutes ton composant à ta palette de composants. Il suffira alors de le glisser/déposer dans ton JFrame.

effectivement , au depart j etais parti pour creer un JPanel dans une classe externe mais c'est plus simple de seulement importer des TextField et de gerer toute l apparence de la frame et du panel comme cela .
par contre j'aimerais vraiment bien utiliser un GridBagLayout , mais je ne comprend pas comment fonctionne les attributs ColunmWeight ColunmWidth RowWeight et RowWidth . pourriez vous me donner plus d'explication sur leur signification ? et peut etre un exemple Embarassed , ca fait deja plusieurs fois que je me casse la tete sur ce layout et pas moyen d'y arriver


trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  Dj x-fuse le Mer 29 Fév 2012, 17:21

As-tu regardé ici : http://docs.oracle.com/javase/7/docs/api/java/awt/GridBagLayout.html ?

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  FûT le Mer 29 Fév 2012, 17:35

Alors je ne sais pas si ca peut aider mais personnellement a chaque fois que "j'extends" une JFrame j'écris un petit "super ("Titre de ma fenetre");" comme première instruction du constructeur (forcément xD) de "ma JFrame" histoire d'effectuer les différentes instructions qu'une JFrame pourrait éventuellement faire normalement ! ;-)


EDIT : Euh ... en fait j'avais pas vu que la réponse avait déjà été donnée ... toute mes excuses .. enfin ceci dit ca peut pas etre plus mal de faire un petit super ! Ah ah Very Happy

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  trikman le Mer 29 Fév 2012, 19:52

oui j ai regardé la doc Dj x fuse ;-) mais je ne comprend pas tout , c ets pour ca que je demande si quelqu'un sait pas m'expliquer de facon moins formelle que la doc .
mais j ai trouvé un bouquin entre temps , je commence a m en sortir avec le gridBagLayout

par contre j ai un nouveau probleme

j'ai donc creer une AssociationGUI qui herite de JFrame , je lui ai ajouté 2 panel et un bouton , dans le tout premier panel j aimerais incoropré un SaisieInteger (pour commencer, qui contient les texteField et jlabel)

si quelqu'un peu m'aider pcq la je seche ...

voila le code :
[il reste surement des instructions inutile tel que des setVisible ou autre]

AssociationGUI<K,V>
Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package autenne_td5_2;

import java.awt.*;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 *
 * @author marty
 */
public class AssociationGui<K,V> extends javax.swing.JFrame {

    /**
    * Creates new form AssociationGui
    */
    public AssociationGui(K[] key,V[] values,SaisieObjet<K> clé ,SaisieObjet<V> valeur) {
     
        this.setPreferredSize(new Dimension(500, 600));
        this.cléVal=key;
        this.valVal=values;
        this.clé =  clé;
        this.clé.setVisible(rootPaneCheckingEnabled);
        this.valeurs = valeur;
        this.valeurs.setVisible(rootPaneCheckingEnabled);
//        GridBagLayout gridBag = new GridBagLayout();
//        GridBagConstraints constraints = new GridBagConstraints();
//     
//       
//       
//       
//       
//       
////        JOptionPane.showMessageDialog(this,
////                  "Taille : "+map.size(),
////                    "Size",
////                  JOptionPane.INFORMATION_MESSAGE);
//                this.panHaut =new JPanel(gridBag);
//        this.panHaut.setLayout(gridBag);
//        this.add(panHaut);
//        this.clé=clé;
//        this.valeurs=valeur;
//        this.clé.setVisible(rootPaneCheckingEnabled);
//      this.valeurs.setVisible(rootPaneCheckingEnabled);
//     
//      this.cléLib= new JLabel("clé : ");
//      cléLib.setPreferredSize(new Dimension(100, 20));       
//        this.valLib= new JLabel("Valeur : ");
//        valLib.setPreferredSize(new Dimension(100, 20));
//        buildConstraints(constraints,0,0,1,1,20,12);
//        panHaut.add(cléLib,constraints);
//        buildConstraints(constraints,1,0,3,1,20,12);
//      panHaut.add(this.clé,constraints);
//        buildConstraints(constraints,0,1,1,1,20,12);
//        panHaut.add(valLib,constraints);
//        buildConstraints(constraints,1,1,3,1,20,12);
//        panHaut.add(this.valeurs,constraints);
        this.map = new HashMap<K,V>();
     
        for(int i=0;i<cléVal.length-1;i++){
            this.map.put(cléVal[i], valVal[i]);
        }
       
        initComponents();
       
        this.jPanel1.add(clé);
       
        pack();
       
       
       
       
       
       
     
       

       
       
    }

    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel1 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.FlowLayout());

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("donnée"));
        jPanel1.setPreferredSize(new java.awt.Dimension(548, 300));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 536, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 274, Short.MAX_VALUE)
        );

        getContentPane().add(jPanel1);

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("operations"));

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 536, Short.MAX_VALUE)
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 135, Short.MAX_VALUE)
        );

        getContentPane().add(jPanel3);

        jButton1.setText("EXECUTER");
        getContentPane().add(jButton1);

        pack();
    }// </editor-fold>                       
 
   
    private void buildConstraints(GridBagConstraints constraints,
            int posX ,int posY,int prolWi , int prolHe,
            int largCel,int hautCel ){
        constraints.gridx=posX;
        constraints.gridy=posY;
        constraints.gridwidth=prolWi;
        constraints.gridheight=prolHe;
        constraints.weightx=largCel;
        constraints.weighty=hautCel;
       
    }
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        /*
        * Set the Nimbus look and feel
        */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
        * If Nimbus (introduced in Java SE 6) is not available, stay with the
        * default look and feel. For details see
        * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(AssociationGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(AssociationGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(AssociationGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(AssociationGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
        * Create and display the form
        */
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
               
                AssociationGui<Integer, Integer> gui =
                new AssociationGui<Integer, Integer>(new Integer[]{14, 15, 23, 8, 7},
                new Integer[]{24 , 35 , 58 , 42 ,74},
                new SaisieInteger(), new SaisieInteger());
                gui.setVisible(true);
            }
        });
    }
    private V[] valVal;
    private K[] cléVal;
   
    private HashMap<K,V> map;
    private SaisieObjet<K> clé;
    private SaisieObjet<V> valeurs;
   
    GridBagConstraints constraints ;
    // Variables declaration - do not modify                   
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    // End of variables declaration                 
}


SaisieObjet
Code:
package autenne_td5_2;


import java.awt.Color;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author marty
 */
public abstract class SaisieObjet<T> extends JPanel {
    protected Object objet;
    public SaisieObjet(){
        super();
        super.setVisible(true);
        this.setBackground(Color.red);
       
    }
    public abstract T getObjet() throws SaisieInvalideException;
   
}

SaisieInteger
Code:
package autenne_td5_2;


import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author marty
 */
public class SaisieInteger extends SaisieObjet<Integer> {
   
   
    //private JLabel cléLib;
    private JTextField cléField;
    private JLabel cléLib;
   
    public SaisieInteger() {
        cléLib = new JLabel(" clé : ");
        cléField= new JTextField();
        cléField.setPreferredSize(new Dimension(100, 30));
        cléField.setHorizontalAlignment(JLabel.LEFT);
       
        super.setVisible(true);
       
        super.add(cléField);
        super.add(cléLib);
       
       
        //cléLib = new JLabel(" Clé : ");
       
        http://this.add(cléLib);
       
       
       
    }
   
   
   
    @Override
    public Integer getObjet() throws SaisieInvalideException{
        String str = cléField.getText();
        return Integer.getInteger(str);
    }
}

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  trikman le Mer 29 Fév 2012, 22:13

c est bon j ai reussi , il fallait absolument mettre un layout dans le panel apparement :-)

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [ALG2] TD5 Swing Matisse - probleme

Message  Contenu sponsorisé Aujourd'hui à 14:48


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum