Problème d'affichage du contenu de JPanel
Bonjour,
Je rencontre actuellement un problème que je n'arrive pas à résoudre malgré mes recherches. Je précise que je développe sous l'IDE netbeans 6, sous linux.
L'application à réaliser est un simulateur de vivarium.
Le problème est le suivant :
Le cadre de mon application est une JFrame, qui elle même contient un JPanel qui sera utiliser pour visualiser le vivarium. Ce JPanel contient à son tour un JPanel qui est un attribut d'une classe que j'ai appelé GTerrain.
Enfin, le JPanel de la classe GTerrain, contient des cases qui sont représentées graphiquement par des JButton, j'ajoute donc ces JButon au JPanel de GTerrain.
Quand je lance mon projet je m'attends donc à ce que ma JFrame contienne un quadrillage de boutons, mais malheureusement ils n'apparaissent pas.
Au niveau du code ça donne :
Dans ma JFrame (code généré par Netbeans) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
public class JFramarium extends javax.swing.JFrame {
/** Creates new form JFramarium */
public JFramarium() {
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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
GTerrain terrain ;
viewer = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("La guerre des mondes");
setResizable(false);
terrain = new GTerrain(viewer) ;
viewer.add(terrain.getJPTerrain()) ;
org.jdesktop.layout.GroupLayout viewerLayout = new org.jdesktop.layout.GroupLayout(viewer);
viewer.setLayout(viewerLayout);
viewerLayout.setHorizontalGroup(
viewerLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 400, Short.MAX_VALUE)
);
viewerLayout.setVerticalGroup(
viewerLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 468, Short.MAX_VALUE)
);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(viewer, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(viewer, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(102, Short.MAX_VALUE))
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-410)/2, (screenSize.height-600)/2, 410, 600);
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JPanel viewer;
// End of variables declaration
} |
Dans ma classe GTerrain :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class GTerrain extends Terrain {
JPanel jpTerrain ; //Le JPanel ajouté au JPanel de la JFrame
GTerrain(JPanel viewer)
{
super((int) viewer.getHeight()/GCase.hauteur,
(int) viewer.getWidth()/GCase.largeur ) ;
jpTerrain = new JPanel() ;
for(int i=0;i<getHauteur();i++)
{
for(int j=0;j<getLargeur();j++)
{
GCase tmpGC = new GCase(getCase(i,j)) ;
jpTerrain.add(tmpGC.getJBCase()) ; //Ici j'ajoute les boutons qui représentent des cases
}
}
}
public JPanel getJPTerrain(){
return jpTerrain ;
}
} |
Enfin dans ma classe GCase :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class GCase extends Case {
private JButton jbCase ; //on utilise le composant jpanel pour representer une case
static int hauteur = 10 ; //hauteur en pixel
static int largeur = 10 ; //largeur en pixel
public GCase(Case c){
super(c.getX(),c.getY()) ;
jbCase = new JButton() ;
jbCase.setSize(hauteur,largeur) ;
}
public JButton getJBCase()
{
return jbCase ;
}
} |
Désolé pour la taille du code, mais je pense que tout ce que j'ai affiché peut s'avérer utile pour comprendre mon erreur.
Merci d'avance pour vos réponses