Bonjour à tous,
Un truc tout bête messieurs dames mais j'ai un probleme pour faire apparaitre un "scroll" sur un JPanel.
La structure de mon IHM est la suivante :
- Une "JFrame"
- Un "JPanel" panelPrincipal
- Un "JPanel" panelGauche
- Un "JPanel" panelDroit
Remarque : Je met le Jpanel "Gauche" et le Jpanel "Droit" dans le Jpanel "principal".
J'affiche bien les deux JPanel Gauche et Droit mais lorsque les composants du panel Droit sont trop nombreux(lorsque l'on clic sur "creer un nouveau formulaire", le scroll ne se met pas en place ...
Infos suplémentaires :
- Le JScrollPane marche bien sur un seul JPanel. c'est a dire quand la JFrame ne contient qu'un seul JPanel.
- Lors de mes traitements sur le JPanel panelDroit, je fait un "panelDroit.removeAll();" pour vider tous le JPanel "Droit" et ajouter de nouveaux JComponent(Voir l'actionPerformed). Je ne sais pas si cele a une incidence?
Merci d'avance pour votre aide.
MON CODE :
// Mon objet courant est la JFrame ...
// Ici seul le bouton "butt_nouveau" fonctionne. (Si des fois vous voudriez essayer l'IHM)
package vue;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.util.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
import modele.*;
public class testPanel extends JFrame implements ActionListener{
private static final long serialVersionUID = 0;
public JPanel panelPrincipal = null;
public JPanel panelDroit = null;
public JPanel panelGauche = null;
public JPanel panelDescription = null;
JScrollPane pr,Droit = null;
private JButton butt_nouveau = null;
private JButton butt_ouvrir = null;
private JButton butt_enregistrer = null;
private JButton butt_search = null;
private JButton butt_recherche = null;
private JButton butt_editer = null;
private JButton butt_supprimer = null;
private JButton butt_export = null;
private JButton butt_drop = null;
private JButton butt_quitter = null;
private JButton saisir_nouveau = null;
private JButton saisir_existant = null;
/**
* Le constructeur de la classe IHM permet de générer une JFrame
* avec un layout de type GridBagLayout
*/
public testPanel(){
super();
build();//On initialise notre fenêtre
}
/**
* La méthode permet de construire l'IHM avec tous ces éléments associés
*/
private void build(){
this.setTitle(" Editeur de formulaire pour les CIP"); //On donne un titre à l'application
this.setSize(800,600); //On donne une taille à notre fenêtre
this.setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
this.setResizable(true) ; //On autorise la redimensionnement de la fenêtre
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
panelPrincipal = new JPanel();
panelPrincipal.setPreferredSize(new Dimension(780, 580));
panelGauche = new JPanel();
panelGauche.setPreferredSize(new Dimension(300, 560));
panelGauche.setBorder(new LineBorder(new Color(0,0,0)));
panelDroit = new JPanel();
panelDroit.setPreferredSize(new Dimension(450, 560));
panelDroit.setBorder(new LineBorder(new Color(0,0,0)));
JTextArea descr = new JTextArea();
descr.setText("Affichage du composant JTextArea reussi");
panelDescription = new JPanel(new GridBagLayout());
panelDescription.setBorder(BorderFactory.createTitledBorder("Description"));
panelDescription.setPreferredSize(new Dimension(450, 200));
panelDescription.add(descr);
/*
*****************************************************
* Création des boutons du panel * *
*****************************************************
*/
butt_nouveau = new JButton();
butt_nouveau.setText("Creer un formulaire");
butt_nouveau.addActionListener(this);
this.addComposantMain(panelGauche, butt_nouveau);
butt_ouvrir = new JButton();
butt_ouvrir.setText("Ouvrir un formulaire");
butt_ouvrir.addActionListener(this);
this.addComposantMain(panelGauche, butt_ouvrir);
butt_search = new JButton();
butt_search.setText("Chercher un formulaire");
butt_search.addActionListener(this);
this.addComposantMain(panelGauche, butt_search);
butt_supprimer = new JButton();
butt_supprimer.setText("Supprimer un formulaire");
butt_supprimer.addActionListener(this);
this.addComposantMain(panelGauche, butt_supprimer);
butt_export = new JButton();
butt_export.setText("Exporter les formulaires vers une cle USB");
//butt_export.setBackground( new Color(255,255,0));
butt_export.addActionListener(this);
this.addComposantMain(panelGauche, butt_export);
butt_quitter = new JButton();
butt_quitter.setText("Quitter l'application");
//butt_quitter.setBackground( new Color(255,255,0));
butt_quitter.addActionListener(this);
this.addComposantMain(panelGauche, butt_quitter);
saisir_nouveau = new JButton("Remplir formulaire");
saisir_nouveau.addActionListener(this);
saisir_existant = new JButton("Modifier formulaire");
saisir_existant.addActionListener(this);
butt_enregistrer = new JButton("Enregistrer formulaire");
butt_enregistrer.addActionListener(this);
butt_recherche = new JButton("Rechercher");
butt_recherche.addActionListener(this);
butt_editer = new JButton("Editer le formulaire");
butt_editer.addActionListener(this);
butt_drop = new JButton("Supprimer le formulaire");
butt_drop.addActionListener(this);
/******************************
* MON PROBLEME EST CI-DESSOUS
******************************/
panelPrincipal.add(panelGauche);
panelDroit.add(panelDescription);
Droit = new JScrollPane(panelDroit);
panelPrincipal.add(Droit);
this.add(panelPrincipal);
pack();
setVisible(true); // Affichage de l'IHM
repaint();
}
public void addForm(JPanel panel, String text, JComponent component){
JLabel label=new JLabel(text);
GridBagConstraints gbc=new GridBagConstraints();
gbc.gridwidth=1;
gbc.insets=new Insets(3,8,3,8); // Définition des espaces entre chaques JComponent
gbc.anchor=GridBagConstraints.LINE_START; // Le JComponent commencera au début de la ligne
panel.add(label,gbc); // ajout du JLabel dans le JPanel
gbc.anchor=GridBagConstraints.LINE_END; // Le JComponent finira à la fin de la ligne
gbc.gridwidth=GridBagConstraints.REMAINDER; // On se souvient de l'emplacement du dernier élément
gbc.fill=GridBagConstraints.HORIZONTAL; // Grille horizontal
gbc.weightx=1.0;
panel.add(component,gbc); // Ajout du JComponent dans le JPanel
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == butt_nouveau){
this.panelDroit.removeAll();
for(int i = 0; i < 100; i++){
addForm(panelDroit, "truc", new JTextField(25));
}
setVisible(true);
repaint();
}
if (e.getSource() == butt_quitter){
System.exit(0);
}
}
public static void main(String[] args) throws IOException {
// MainPanelOk ihm = new MainPanelOk();
// MainPanel ihm = new MainPanel();
testPanel test = new testPanel();
}
}