Ajout d'une class jpanel (extends) à une class jframe

Résolu/Fermé
tnorange - 27 mars 2014 à 19:52
 Mic - 28 mars 2014 à 22:25
Bonsoir !

J'aurais besoin de l'aide de quelqu'un !
J'aimerais bien ajouter une classe Test() qui extends un JPanel à une classe Interface() qui contient une Jframe.

J'ai essayé de cette manière mais ça ne marchais pas !

JPanel jpCenter = new JPanel();
jpCenter.add(new Test());
jp.add(jpCenter, BorderLayout.CENTER);


Ça compile, mais ça n'affiche rien !
J'ai essayé aussi de faire un jf=Jframe

jf.getContentPane().repaint();


ça n'affiché rien non plus
et j'ai aussi sans le getContentPane() et même résultat

Merci pour votre aide ! Bonne soirée !

2 réponses

KX Messages postés 16643 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 6 décembre 2022 2 984
27 mars 2014 à 22:50
Le problème c'est Test.

Tu as fait un héritage de JPanel, mais tu mets tout dans la variable
jp
alors que c'est
this
qu'il faut utiliser là.

Pour ne pas tout changer dans le code je fait juste cette modification dans Test :
JPanel jp = this; //Panneau de fond

Et voilà ;-)
1
Génial ça marche ! Un très grand merci ! Bonne continuation ! :)
0
KX Messages postés 16643 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 6 décembre 2022 2 984
27 mars 2014 à 20:14
Bonsoir,

Est-ce que tu as fait
jf.setContentPane(jpCenter)
et
jf.setVisible(true)
?
0
Re:
Merci pour ton aide !

Je viens d'essayer mais ça ne marche pas !
J'avais déjà un setContentpane. Car en fait j'ai une classe qui contient une Jframe et qui a déjà deux jpanel, et pour être plus ergonomique, j'ai fais une classe Test() qui est un extends jpanel et je voudrais intégrer la classe test extends jpanel à la classe Jframe...

jf.setContentPane(jp);
jf.setVisible(true);


Comment faire ?
Peut être vous voudriez le code ?
0
KX Messages postés 16643 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 6 décembre 2022 2 984
27 mars 2014 à 21:19
"Peut être vous voudriez le code ?"
En effet, ça aide ;-)
0
:) voici la 1er class Interface, le Jpanel jpCentre se trouve à la fin de la classe.

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //
// import java.awt.event.*; pour les actionListener des sections du menu !!!!! //
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Interface{
    
    public Interface(){
        JFrame jf = new JFrame("Let's go !");
        JPanel jp = new JPanel();
        jp.setLayout(new BorderLayout());
        
        JMenuBar jmb = new JMenuBar();
        //Titre du menu de la bar de navigation "Menu"
        JMenu jmMenu = new JMenu("Menu");
            //Sous-menu de Menu
                JMenu jmLearn = new JMenu("Learn");
                JMenu jmTest = new JMenu("Test");
                JMenuItem jmHelp = new JMenuItem("Help");
                //ActionListener --> L'action sur l'onglet Help
                jmHelp.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent ae){
                        new Help();
                    }
                });
                
        
                    //SousMenu jmLearn 
                    JMenu jmLearnLevelOne = new JMenu("Level 1");
                    JMenu jmLearnLevelTwo = new JMenu("Level 2");
        
                        //SousMenu jmLearnLevelOne part
                        JMenuItem jmLearnLevelOnePartOne = new JMenuItem("Part 1");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmLearnLevelOnePartOne.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Learn : Level 1 - part 1");
                                }
                            });
                        JMenuItem jmLearnLevelOnePartTwo = new JMenuItem("Part 2");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmLearnLevelOnePartTwo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Learn : Level 1 - part 2");
                                }
                            });
                        JMenuItem jmLearnLevelOnePartThree = new JMenuItem("Part 3");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmLearnLevelOnePartThree.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Learn : Level 1 - part 3");
                                }
                            });
                            
                          
                        //SousMenu jmLearnLevelTwo part
                        JMenuItem jmLearnLevelTwoPartOne = new JMenuItem("Part 1");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmLearnLevelTwoPartOne.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Learn : Level 2 - part 1");
                                }
                            });
                        JMenuItem jmLearnLevelTwoPartTwo = new JMenuItem("Part 2");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmLearnLevelTwoPartTwo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Learn : Level 2 - part 2");
                                }
                            });
                        JMenuItem jmLearnLevelTwoPartThree = new JMenuItem("Part 3");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmLearnLevelTwoPartThree.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Learn : Level 2 - part 3");
                                }
                            });
                        
                    //SousMenu jmTest
                    JMenu jmTestLevelOne = new JMenu("Level 1");
                    JMenu jmTestLevelTwo = new JMenu("Level 2");
                       
                        //SousMenu jmTestLevelOne part
                        JMenuItem jmTestLevelOnePartOne = new JMenuItem("Part 1");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmTestLevelOnePartOne.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Test : Level 1 - part 1");
                                }
                            });
                        JMenuItem jmTestLevelOnePartTwo = new JMenuItem("Part 2");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmTestLevelOnePartTwo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Test : Level 1 - part 2");
                                }
                            });
                        JMenuItem jmTestLevelOnePartThree = new JMenuItem("Part 3");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmTestLevelOnePartThree.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Test : Level 1 - part 3");
                                }
                            });
                            
                        //SousMenu jmTestLevelTwo part
                        JMenuItem jmTestLevelTwoPartOne = new JMenuItem("Part 1");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmTestLevelTwoPartOne.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Test : Level 2 - part 1");
                                }
                            });
                        JMenuItem jmTestLevelTwoPartTwo = new JMenuItem("Part 2");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmTestLevelTwoPartTwo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Test : Level 2 - part 2");
                                }
                            });
                        JMenuItem jmTestLevelTwoPartThree = new JMenuItem("Part 3");
                            //ActionListener --> L'action sur l'onglet Part n°....
                            jmTestLevelTwoPartThree.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent ae){
                                    JOptionPane.showMessageDialog(null, "Test: Test : Level 2 - part 3");
                                }
                            });
                            
                    //Intégration des élèments d'un JMenu à la au JMenu, JPanel et JFrame   
                    jmLearn.add(jmLearnLevelOne);
                        jmLearnLevelOne.add(jmLearnLevelOnePartOne);
                        jmLearnLevelOne.add(jmLearnLevelOnePartTwo);
                        jmLearnLevelOne.add(jmLearnLevelOnePartThree);
                    jmLearn.add(jmLearnLevelTwo);
                        jmLearnLevelTwo.add(jmLearnLevelTwoPartOne);
                        jmLearnLevelTwo.add(jmLearnLevelTwoPartTwo);
                        jmLearnLevelTwo.add(jmLearnLevelTwoPartThree);
                    jmTest.add(jmTestLevelOne);
                        jmTestLevelOne.add(jmTestLevelOnePartOne);
                        jmTestLevelOne.add(jmTestLevelOnePartTwo);
                        jmTestLevelOne.add(jmTestLevelOnePartThree);
                    jmTest.add(jmTestLevelTwo);
                        jmTestLevelTwo.add(jmTestLevelTwoPartOne);
                        jmTestLevelTwo.add(jmTestLevelTwoPartTwo);
                        jmTestLevelTwo.add(jmTestLevelTwoPartThree);
                        
                  
        jmMenu.add(jmLearn);
        jmMenu.add(jmTest);
        jmMenu.add(jmHelp);
        jmb.add(jmMenu);
        jf.setJMenuBar(jmb);
        
        //Un panel Nord (pour l'en-tête du programme)
        JPanel jpNorth = new JPanel();
        jpNorth.add(new JLabel("<html><font size=4><u>Let's go !</u></font></html>"));
        jp.add(jpNorth, BorderLayout.NORTH);
        
        //Un panel Centre (pour le programmes test)
        JPanel jpCenter = new JPanel();
        jpCenter.add(new Test());
        jp.add(jpCenter, BorderLayout.CENTER);
        
        jf.setVisible(true);
        jf.setPreferredSize(new Dimension(600,400));
        jf.setResizable(false);
//         jf.setLocation(300,20);
        jf.setContentPane(jp);
        jf.pack();
        jf.setLocationRelativeTo(null);
    }
}


Et voici la deuxième classe Test() extends jpanel que je voudrais intégrer dans la Jframe de la 1er classe !

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JPanel{
    
    JTextField jtf;
    JButton jbOk;
    private int c = 0;
    private JLabel jlQuestion = new JLabel();
    private int numQuestion = 0;
    LevelOnePartOne tab = new LevelOnePartOne();
    
    public Test(){
        super();
        JPanel jp = new JPanel();//Panneau de fond
        jp.setLayout(new BorderLayout());
        
        JPanel jpNorth = new JPanel();
        nextQuestion();
        jpNorth.add(jlQuestion);
        
        JPanel jpCenter = new JPanel();
        jtf = new JTextField("",20);
        jpCenter.add(jtf);
        
        JPanel jpEast = new JPanel();
        jbOk = new JButton("Ok");
        jpEast.add(jbOk);
        
        jbOk.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                if(tab.tab2[c].equals(jtf.getText()) || tab.tab3[c].equals(jtf.getText()) || tab.tab4[c].equals(jtf.getText()))
                {
                    JOptionPane.showMessageDialog(null, "Ok");
                }
                else
                {
                    JOptionPane.showMessageDialog(null, "Non");
                }
                nextQuestion();
                nextComponent();
                refresh();
            }
        });
        
        jp.add(jpNorth, BorderLayout.NORTH);
        jp.add(jpCenter, BorderLayout.CENTER);
        jp.add(jpEast, BorderLayout.EAST);    
    }
    
    public void refresh(){
        jtf.setText("");
    }
    
    public void nextQuestion(){
        jlQuestion.setText("The word to translate : "+tab.tab1[numQuestion]+" ?");
//         numQuestion = (numQuestion+1)%tab1.length;
        numQuestion++;
        if(numQuestion>tab.tab1.length-1)
        {
            numQuestion = 0;
        }
    }
    
    public void nextComponent(){
        c++;    
        if(c>tab.tab1.length-1)
        {
            c = 0;
            jbOk.setEnabled(false);
            jlQuestion.setText("The test is finish");
            jtf.setEditable(false);
        }
    }
}


Merci ... !
0