Position des composants.

Résolu
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
-
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
-
Bonjour tout le monde

J'ai du mal à positionner les composants sur une ligne.

Mon autre problème est de pouvoir placer les composants l'un au dessus de l'autre. 

Voici la classe principal

import java.awt.*;
import java.awt.event.*;



import javax.swing.*;
import javax.swing.event.*;
import java.awt.image.*;



public class Banque {



public final static int longu = 700;
 
public final static int larg = 600;



public static void main(String[] args)
{





  JFrame F = new JFrame("Crédit toto");



  F.setSize(longu,larg);
  F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  F.setBackground(Color.darkGray);
  F.getContentPane().add(new Elementbanque(),BorderLayout.NORTH);
  F.getContentPane().add(new Table(),BorderLayout.CENTER);
  F.getContentPane().add(new Quit(),BorderLayout.SOUTH);
  F.setVisible(true);





}





}



Voici la class du composant

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;




 



public class Quit extends JPanel implements ActionListener
{
JButton quit;



public Quit()
{



 quit = new JButton("Quitter");
 quit.addActionListener(this);
 this.add(quit);





}



public void actionPerformed(ActionEvent evt)
{



Object source = evt.getSource();





if(source==quit)
{



System.exit(0);



}




 



}
}



j'ai regardé ce tuto, mai ca ne ma pas beaucoup aidé

http://java.developpez.com/faq/java/?page=graphique_fenetres_composants#GRAPHIQUE_positionner_composant

Pouvez vous m'aider

Merci d'avance.

Cordialement

A bientôt

8 réponses

Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
bonsoir tout le monde

Bon, voici ce que j'ai fais.

Voici le code.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color.*;





public class Elementbanque extends JPanel implements ActionListener



{
modetable mo = new modetable();



int i = mo.getRowCount();




 



JTextField pretdemand;
JTextField quotient;
JTextField sommetot;
JTextField temps;
JButton quit;
JTable rembourcement;
JButton somme;



public Elementbanque()



{



 GridBagLayout gridbag = new GridBagLayout();
 GridBagConstraints constraints = new GridBagConstraints();
 this.setLayout(gridbag);



 JLabel creditinsset = new JLabel("Crédit INSSET");
  
 creditinsset.setForeground(Color.red);



 Font creditinssetfont = creditinsset.getFont();
 creditinssetfont = creditinssetfont.deriveFont(Font.BOLD).deriveFont(16f);
 creditinsset.setFont(creditinssetfont);



 constraints.gridx=1;
 constraints.gridy=0;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 
 
 



 gridbag.setConstraints(creditinsset, constraints);
 this.add(creditinsset);





 JLabel sommedemand = new JLabel("Somme demandé");



 this.add(sommedemand);



 constraints.gridx=0;
 constraints.gridy=1;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 
 



 gridbag.setConstraints(sommedemand, constraints);
 





  pretdemand = new JTextField(10);



 this.add(pretdemand);



 
 constraints.gridx=1;
 constraints.gridy=1;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 
 gridbag.setConstraints(pretdemand, constraints);
 
 
 JLabel taux = new JLabel("Taux");
 this.add(taux);
 
 
 constraints.gridx=0;
 constraints.gridy=2;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(taux, constraints);



  quotient = new JTextField(10);



 this.add(quotient);
 
 
 constraints.gridx=1;
 constraints.gridy=2;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(quotient, constraints);




 



 
 JLabel nbmois = new JLabel("période du pret");
 this.add(nbmois);





 constraints.gridx=0;
 constraints.gridy=3;
 constraints.gridwidth=1;
 constraints.gridheight=1;



 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(nbmois, constraints);




 




 





  temps= new JTextField(10);
 this.add(temps);



 
 constraints.gridx=1;
 constraints.gridy=3;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(temps, constraints);




 




 



 somme = new JButton("somme");
 somme.addActionListener(this);
 this.add(somme);
 



 constraints.gridx=0;
 constraints.gridy=25;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(somme, constraints);




 



 JLabel dette = new JLabel("Total due");
 this.add(dette);



 
 constraints.gridx=0;
 constraints.gridy=5;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(dette, constraints);




 



  sommetot = new JTextField(10);
 sommetot.addActionListener(this); 
 this.add(sommetot);
 
 
 constraints.gridx=1;
 constraints.gridy=5;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(sommetot, constraints);



 JLabel table = new JLabel("Tableau d'appurement du prêt");
 table.setForeground(Color.blue);
 this.add(table);
 
 constraints.gridx=1;
 constraints.gridy=6;
 constraints.gridwidth=1;
 constraints.gridheight=3;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(table, constraints);





 
 String[][] rowData = new String[i][2];
 String[] columnNames = new String[2];
 
 columnNames[0]="Date";
 columnNames[1]="Somme prélevée";



 rembourcement = new JTable(rowData,columnNames);
 JScrollPane sroll = new JScrollPane(rembourcement);
 



 constraints.gridx=0;
 constraints.gridy=10;
 constraints.gridwidth=5;
 constraints.gridheight=8;
 constraints.weightx=0;
 constraints.weighty=0;
 
 
 gridbag.setConstraints(sroll, constraints);
 this.add(sroll);





 quit = new JButton("Quitter");
 quit.addActionListener(this);
 
 constraints.gridx=2;
 constraints.gridy=25;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=20;
 constraints.weighty=20;
 gridbag.setConstraints(quit, constraints);
 this.add(quit);




 




 





 
}



public void actionPerformed(ActionEvent evt) {





Calcul c = new Calcul();




 



Object source = evt.getSource();





int totalannee=0, moi=0, tempstaux=0;



float totaldue=0;



String riendanssommdemande="";





boolean som=false;





if(source==somme)
{



som=true;



int emprunt =  Integer.parseInt(pretdemand.getText());



int temp = Integer.parseInt(temps.getText());





float taux = Float.valueOf(quotient.getText());




 





sommetot.setText(Double.toString(c.pret(som, riendanssommdemande, taux, totalannee, tempstaux, moi, emprunt, totaldue, temp)));




 



 float real;



 real=c.getSommprelev();



 String paiement;



 paiement = String.valueOf(real);



rembourcement.setValueAt(paiement,i,1);



}





if(source==quit)
{



System.exit(0);



}




 



}



}




Merci

Cordialement

A bientôt
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Renseigne toi sur les layout dans un premier temps (comme te l'indique le lien que tu donne) : le positionnement des contrôles dans un panel ou autre container est géré par un Layout.

Si tu veux les contrôles les uns à côté des autres, un flowLayout suffit (celui par défaut en fait), par contre, si tu les veux les uns en dessous des autres, utilise plutôt un GridBagLayout qui te permet de définir une grille dans laquelle seront placés tes composants.

L'avantage des layouts, c'est que les contrôles sont automatiquement redimensionnés selon la taille de la fenêtre.

Par contre, si ton but est de faire des feuilles non redimensionnables (des feuilles d'options en particulier), n'utilise pas de layout, pose tes contrôles aux coordonnées que tu veux en faisant :

tonContainer.SetLayout(null);
tonControle.setBounds(lesCoordonnéesDeTonControle);
tonContainer.add(tonControle, null);
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Re

je vais essayer

A+
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonjour tout le monde

J'aurai besoin d'aide pour completer mon code svp.

Je ne peux pas mettre getContentPane car mes composant sont en JPanel, que puis je mettre à la place svp.

Class principal.:

import java.awt.*;
import java.awt.event.*;



import javax.swing.*;
import javax.swing.event.*;
import java.awt.image.*;




 



public class Banque {





public final static int longu = 700;
 
public final static int larg = 600;





 
public static void main(String[] args)
{





  JFrame F = new JFrame("Crédit INSSET");



  F.setSize(longu,larg);
  F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  F.setLayout(new FlowLayout());
  F.setBackground(Color.darkGray);
  F.getContentPane().add(new Elementbanque());
  F.getContentPane().add(new Table(),BorderLayout.CENTER);
  F.getContentPane().add(new Quit());
  F.setVisible(true);





}





}





Class de composant:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color.*;





public class Elementbanque extends JPanel implements ActionListener



{



JTextField pretdemand;
JTextField quotient;
JTextField sommetot;
JTextField temps;



JButton somme;



public Elementbanque()



{



 GridBagLayout gridbag = new GridBagLayout();
 GridBagConstraints constraints = new GridBagConstraints();
 this.setLayout(gridbag);



 JLabel creditinsset = new JLabel("Crédit INSSET");
  
 creditinsset.setForeground(Color.red);



 Font creditinssetfont = creditinsset.getFont();
 creditinssetfont = creditinssetfont.deriveFont(Font.BOLD).deriveFont(16f);
 creditinsset.setFont(creditinssetfont);



 constraints.gridx=1;
 constraints.gridy=0;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 constraints.fill = GridBagConstraints.NONE;
 constraints.anchor = GridBagConstraints.CENTER;



 gridbag.setConstraints(creditinsset, constraints);
 this.add(creditinsset);





 JLabel sommedemand = new JLabel("Somme demandé");



 this.add(sommedemand);



 constraints.gridx=0;
 constraints.gridy=1;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 constraints.fill = GridBagConstraints.NONE;
 constraints.fill = GridBagConstraints.WEST;



 gridbag.setConstraints(sommedemand, constraints);
 this.add(sommedemand);





  pretdemand = new JTextField(10);



 this.add(pretdemand);



 
 constraints.gridx=1;
 constraints.gridy=1;
 constraints.gridwidth=1;
 constraints.gridheight=1;





 
 
 JLabel taux = new JLabel("Taux");
 this.add(taux);
 
 
 constraints.gridx=0;
 constraints.gridy=2;
 constraints.gridwidth=1;
 constraints.gridheight=1;



  quotient = new JTextField(10);



 this.add(quotient);
 
 
 constraints.gridx=1;
 constraints.gridy=2;
 constraints.gridwidth=1;
 constraints.gridheight=1;




 





 
 JLabel nbmois = new JLabel("période du pret");
 this.add(nbmois);





 constraints.gridx=0;
 constraints.gridy=3;
 constraints.gridwidth=1;
 constraints.gridheight=1;



  temps= new JTextField(10);
 this.add(temps);



 
 constraints.gridx=1;
 constraints.gridy=3;
 constraints.gridwidth=1;
 constraints.gridheight=1;




 




 





 somme = new JButton("somme");
 somme.addActionListener(this);
 this.add(somme);
 



 constraints.gridx=0;
 constraints.gridy=4;
 constraints.gridwidth=1;
 constraints.gridheight=1;



 JLabel dette = new JLabel("Total due");
 this.add(dette);



 
 constraints.gridx=0;
 constraints.gridy=5;
 constraints.gridwidth=1;
 constraints.gridheight=1;




 





  sommetot = new JTextField(10);
 sommetot.addActionListener(this); 
 this.add(sommetot);
 
 
 constraints.gridx=1;
 constraints.gridy=5;
 constraints.gridwidth=1;
 constraints.gridheight=1;



 
}



public void actionPerformed(ActionEvent evt) {





Calcul c = new Calcul();



Object source = evt.getSource();





int totalannee=0, moi=0, tempstaux=0;



float totaldue=0;



String riendanssommdemande="";





boolean som=false;





if(source==somme)
{



som=true;



int emprunt =  Integer.parseInt(pretdemand.getText());



int temp = Integer.parseInt(temps.getText());





float taux = Float.valueOf(quotient.getText());

sommetot.setText(Double.toString(c.pret(som, riendanssommdemande, taux, totalannee, tempstaux, moi, emprunt, totaldue, temp)));



}





}



}


Pouvez vous m'aider?

Merci

Cordialement

A bientôt
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
F.add tout simplement : pas besoin de récupèrer le panel interne du JPanel vu que c'est lui même !
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonsoir

Ca ne fonctionne pas

Voici l'erreur

Elementbanque.java:48: cannot find symbol
symbol  : variable F
location: class Elementbanque
        F.add(creditinsset);
        ^
Elementbanque.java:65: cannot find symbol
symbol  : variable F
location: class Elementbanque
        F.add(sommedemand);
        ^
2 errors

A +
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonjour tout le monde

Il ya de l'amelioration.

Voici la class des composants.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color.*;





public class Elementbanque extends JPanel implements ActionListener



{




 



JTextField pretdemand;
JTextField quotient;
JTextField sommetot;
JTextField temps;



JButton somme;



public Elementbanque()



{



 GridBagLayout gridbag = new GridBagLayout();
 GridBagConstraints constraints = new GridBagConstraints();
 this.setLayout(gridbag);



 JLabel creditinsset = new JLabel("Crédit INSSET");
  
 creditinsset.setForeground(Color.red);



 Font creditinssetfont = creditinsset.getFont();
 creditinssetfont = creditinssetfont.deriveFont(Font.BOLD).deriveFont(16f);
 creditinsset.setFont(creditinssetfont);



 constraints.gridx=1;
 constraints.gridy=0;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 



 gridbag.setConstraints(creditinsset, constraints);
 this.add(creditinsset);





 JLabel sommedemand = new JLabel("Somme demandé");



 this.add(sommedemand);



 constraints.gridx=0;
 constraints.gridy=1;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;
 



 gridbag.setConstraints(sommedemand, constraints);
 





  pretdemand = new JTextField(10);



 this.add(pretdemand);



 
 constraints.gridx=1;
 constraints.gridy=1;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(pretdemand, constraints);
 
 
 JLabel taux = new JLabel("Taux");
 this.add(taux);
 
 
 constraints.gridx=0;
 constraints.gridy=2;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(taux, constraints);



  quotient = new JTextField(10);



 this.add(quotient);
 
 
 constraints.gridx=1;
 constraints.gridy=2;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(quotient, constraints);




 



 
 JLabel nbmois = new JLabel("période du pret");
 this.add(nbmois);





 constraints.gridx=0;
 constraints.gridy=3;
 constraints.gridwidth=1;
 constraints.gridheight=1;



 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(nbmois, constraints);




 




 





  temps= new JTextField(10);
 this.add(temps);



 
 constraints.gridx=1;
 constraints.gridy=3;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(temps, constraints);




 




 



 somme = new JButton("somme");
 somme.addActionListener(this);
 this.add(somme);
 



 constraints.gridx=0;
 constraints.gridy=4;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(somme, constraints);




 



 JLabel dette = new JLabel("Total due");
 this.add(dette);



 
 constraints.gridx=0;
 constraints.gridy=5;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(dette, constraints);




 



  sommetot = new JTextField(10);
 sommetot.addActionListener(this); 
 this.add(sommetot);
 
 
 constraints.gridx=1;
 constraints.gridy=5;
 constraints.gridwidth=1;
 constraints.gridheight=1;
 constraints.weightx=30;
 constraints.weighty=30;



 gridbag.setConstraints(sommetot, constraints);
 
}



public void actionPerformed(ActionEvent evt) {





Calcul c = new Calcul();




 



Object source = evt.getSource();





int totalannee=0, moi=0, tempstaux=0;



float totaldue=0;



String riendanssommdemande="";





boolean som=false;





if(source==somme)
{



som=true;



int emprunt =  Integer.parseInt(pretdemand.getText());



int temp = Integer.parseInt(temps.getText());





float taux = Float.valueOf(quotient.getText());

sommetot.setText(Double.toString(c.pret(som, riendanssommdemande, taux, totalannee, tempstaux, moi, emprunt, totaldue, temp)));



}





}



}


Les positions sont correcte, mon probleme est:

1.Tout est au milieu de la frame, je veux mettre tout plus ver la hauteur sans changer la position des composant.

2.Les Jtextfild sont comme ecrasé, comment faire pour les élargir.

3.Je veux ajouter une class Table, comment faire pour mettre le tableau à la suite.

Merci.

Cordialement

A bientôt.
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
bonjour tout le monde

J'ai terminé de positionner les composants.

Je souhaiterai espacer les composant, car je trouve qu'il sont serés..

Merci

Cordialement

A bientôt