dinfree
Messages postés1Date d'inscriptiondimanche 22 juillet 2007StatutMembreDernière intervention22 juillet 2007
-
22 juil. 2007 à 18:08
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 2012
-
24 juil. 2007 à 02:04
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)
/**
* 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_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();
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 24 juil. 2007 à 02:04
panelPrincipal.add(panelGauche);
panelDroit.add(panelDescription);
Droit = new JScrollPane(panelDroit);
panelPrincipal.add(Droit);
this.add(panelPrincipal);
pack();
setVisible(true); // Affichage de l'IHM
repaint();
cette partie de ton code c est du n import quoi ...
si rien ne fonctionne normalement c est normal...
Bien que n ayant pas bien compri l effet que tu veux rendre il est évident qu il te faut assimiler la notion de Layout avant tout... ;o) nulle part tu ne defini ton layout : setLayout( ... )
ensuite sur le JScroll aussi plusieurs chose t echape ;o) ...
il contiend une notion de viewport qu il faut donc lui donner pour qu il soit utile.... ;o) l utilisation la plus simple etant de la lui donner à la construction : new JScrollPane( tonJPanel );
ensuite un repaint derriere un pack est completement superflu .. de meme le setvisible je l aurai plutot positionné dans le Main ;o)