Afficher un textfield

deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007 - 1 déc. 2006 à 20:19
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 18 déc. 2006 à 12:06
Bonjour,

Systématiquement les objets que j'ajoute à ma fenetre prennent la taille de la fenetre elle même ...

Pourriez vous aider un pauvre débutant ??

Merci

Source ci dessous :

/* DECLARATIONS */
import java.awt.*;
import java.awt.event.*;

public class mainProject extends Frame implements WindowListener,ActionListener {

    // déclaration des composants
   
    MenuBar maBarre;
    Menu monMenu;
    MenuItem itemQuitter;
    TextField zoneTxt;
   
    public mainProject() {
        setBackground(Color.GRAY);
        setSize(640,480);
        setTitle("Java Test");
       
        construireMenu();

        zoneTxt=new TextField(20);
        add(zoneTxt);
       
       
        addWindowListener(this);       
    }
   
    private void construireMenu() {
        //construction du menu
        maBarre=new MenuBar();
        setMenuBar(maBarre); 
        //menu Fichier
        monMenu=new Menu("Fichier");
        maBarre.add(monMenu);   
        //item Quitter
        itemQuitter=new MenuItem("Quitter");
        monMenu.add(itemQuitter);
        itemQuitter.addActionListener(this);
    }
   
    public void actionPerformed(ActionEvent e) {
         if (e.getActionCommand().equals("Quitter")){
          System.exit(0);
         }
    }
   
    public static void main(String args[]) {
        System.out.println("Lancement de l'application ...");
        mainProject b=new mainProject();
        b.setVisible(true);
    }

    public void paint(Graphics g) {
        g.drawString("Bonjour !", 1,1);
    }
   
    public void windowClosing(WindowEvent e) {
        System.out.println("Quit !");
        System.exit(0);
    }

    public void windowClosed(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
    public void windowOpened(WindowEvent e) {}
}

19 réponses

didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
1 déc. 2006 à 21:19
Slt
en fais pour eviter cela tu a plusieurs possibiliter  (je t'en propose une (celle que j'utilise)):
      + tu defini un layout null (ce que veut dire que tu devra donner tous les coordonnes pour placer un element : 
            setLayout(null); //juste apres ou juste avant les proprietes de la fenetre
            JTextField A = new JTextField(); //Ton JTextField
            A.setBounds(new Rectangle(X, int Y, int longueur, int hauteur); //Sa position dans la fenetre
      + ensuite pour les autres type de layout faut voir sur internet

voila, +
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
1 déc. 2006 à 22:01
je dois être une buse ça ne marche pas :(

j'ai mis comme tu as dis :

    public mainProject() {
        setBackground(Color.GRAY);
        setSize(640,480);
        setTitle("Java Test");
       
        construireMenu();
       
        setLayout(null);
        zoneTxt=new TextField();
        zoneTxt.setBounds(new Rectangle(10, 10, 10, 10));
        zoneTxt.setBackground(Color.red);
        add(zoneTxt);
       
       
        addWindowListener(this);       
    }

sans changer les autres fonctions, et cette fois ci la textfield ne s'affiche même pas ! :s
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
1 déc. 2006 à 22:06
non non ce n'est pas toi, excuse moi j'ai ommis un element
Container content = getContentPane();
content.setLayout(null);
par contre là il faudra que tu ajoute tous tes composant a "content" (c'est a dirte le containair).
j'espere que c'est ca. +
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
1 déc. 2006 à 22:16
The method getContentPane() is undefined for the type mainProject

:(( raaaaaaaaahh
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
1 déc. 2006 à 22:19
je te donne un exemple
"import javax.swing.*;
import java.awt.*;
public class Test extends JFrame {
   public Test(){
      this.setTitle("Test du JTextField");
      this.setSize(200, 80);
      this.setLocationRelativeTo(null);
      this.setResizable(false);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



      Container content = getContentPane();
      content.setLayout(null);



      JTextField MonJTextField = new JTextField();
      MonJTextField.setBounds(new Rectangle(10, 10, 175, 20));
      content.add(MonJTextField);
   }



   public static void main(String arg[]){
      new Test().setVisible(true);
   }
}"






voila +
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
1 déc. 2006 à 22:23
ok j'utilisais pas une JFrame mais une Frame ...

je tente ça :)

merci !
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
1 déc. 2006 à 22:26
super !!!!!!!!!!!  avec swing ça va bcp mieux :)

merci de ta patience ! super cool :)
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 déc. 2006 à 00:21
bonsoir,
bon une reponse rapide car ca se trouve avec un minimum de recherche

heu didoux raconte un peu n'importe quoi ....

java propose un mecanisme puissant pour la gestion du placement des composants les layouts ...

tout d'abord faisons simple :
une fenetre java est represente par un Object JFrame (les puristes diront que ce n'est pas tout a fais vrai mais ca suffit pour programmer ce que ut veux)
dans ce JFrame tu peux stocker des composant
il y a plusieur type de composant : les conteneur et les les "contenu"
dans les conteneur il y a par exemple les JPanel dans lesquel tu peux ajouter plusieur composant exemple :
 JPanel panel = new JPanel();
panel.add(new JButton("coucou"));

le morceau de code ajoute un JButton au JPanel panel!
ensuite il faut savoir que java par defaut affecte le flowlayout comme gestionnaire par default , il ajoute simplement les composant les un  ala suite des autres

il exite beaucoup e gestionnaire : cardLayout, BorderLayout,GridLayout,GridBagLayout et j'en oubli

exemple :

import

java.awt.BorderLayout;

import

javax.swing.*;

public

class
Test
extends
JFrame
{

public
static
void
main (String[]
args)
{

<gras>new

Test();

}

public
Test()
{

<gras>super
("test");

setSize(300,
300);

JButton
bnorth
=
new
JButton("north"),
bsouth
=
new
JButton("souh"),
beast
=
new
JButton(

"east"),
bwest
=
new
JButton("jwest"),bcenter
=
new
JButton("center");

JPanel
center
=
new
JPanel();

center.setLayout(new
BorderLayout());

center.add(bnorth,BorderLayout.NORTH);

center.add(bsouth,BorderLayout.SOUTH);

center.add(beast,BorderLayout.EAST);

center.add(bwest,BorderLayout.WEST);

center.add(bcenter,BorderLayout.CENTER);

add(center,BorderLayout.CENTER);

setVisible(true);

}}

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
2 déc. 2006 à 10:57
merci beaucoup, j'ai bien compris ... cela ressemble avec un peu de distance, aux float:left et right de css2  ... enfin bon je me comprend :)

je m'en sors donc maintenant pour positionner les champs ou je veux.

il me reste le pb de l'evenement que je n'arrive pas à faire fonctionner avec les controles issus de javax.swing

avant, je faisais un truc du genre :

bouton.addActionListener(this);

et puis dans ma classe, j'avais une méthode :

public void actionPerformed(ActionEvent e) {
     if (e.getActionCommand().equals("Quitter")){
      System.exit(0);
     }
}

Cela ne fonctionne plus, quelqu'un peut m'aider à nouveau ?
 
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 déc. 2006 à 11:23
copi colle un peu de ton code

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
2 déc. 2006 à 11:39
Le voici :

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
//import java.awt.Color;
import javax.swing.*;

public class fenetrePrincipale extends JFrame {
   
    JPanel Label1;
   
    public fenetrePrincipale() {
       
        setTitle("Fenetre Principale");
        setSize(320, 240);
        setLocationRelativeTo(null);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
        Label1 = new JPanel();
        Label1.setLayout(new BorderLayout());
               
        JButton Bouton1 = new JButton("test");
        JButton BoutonC = new JButton("Milieu");
        JButton Bouton2 = new JButton("deuze");
       
        Bouton1.addActionListener(this);
       
        Label1.add(Bouton1,BorderLayout.NORTH);
        Label1.add(BoutonC,BorderLayout.CENTER);
        Label1.add(Bouton2,BorderLayout.SOUTH);
       
        add(Label1, BorderLayout.CENTER);
       
        setVisible(true);
    }
   
    public static void main(String arg[]){
       new fenetrePrincipale();
    }   

     public void actionPerformed(ActionEvent e){
         
         if (((JMenuItem)(e.getSource())).getText() == "Quitter")
             System.exit(0);
     }
   
}

J'ai essayé d'ajouter à ma classe : implements ActionListener, mais ça n'a pas l'air d'etre la solution.

J'ai aussi une autre question concernant le placement des éléments sur l'interface. Dans le cas d'un BorderLayout, on ne peut pas spécifier de taille ? (aux boutons par exemple)

Je suis désolé de poser des questions stupides mais il faut bien débuter un jour ou l'autre ...
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
2 déc. 2006 à 11:59
j'ai modifié le début de mon programme :

import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;

public class fenetrePrincipale extends JFrame implements AncestorListener{

est ce que je vais dans la bonne direction ?
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 déc. 2006 à 12:04
ben normal que ca marche pas
1- tu n'as aucun boutton qui a comme texte Quitter
2- ce n'est pas des JMenuItem mais des JButton que tu as donc :
 if (((JButton)(e.getSource())).getText() == "Quitter")
             System.exit(0);
     }

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
2 déc. 2006 à 12:25
hmmpf j'ai trouvé !

oui il y avait de ça, et puis j'ai modifié en déclarant un objet ActionListener .. ça fonctionne cette fois.

Merci pour tout !
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 déc. 2006 à 12:26
Salut,

en java on ne fais jamais  getText() = = "Quitter" mais plus getText().equals("Quitter') ou encore getText().compareTo("Quitter") == 0

sinon pour ce qui es de ton action fais plustot

 public void actionPerformed(ActionEvent e){
    if(e.getSource() instanceof JButton){
        if ((( JButton )(e.getSource())).getText().compareTo("Quitter") == 0)
            System.exit(0);
    }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
deterred Messages postés 35 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 27 août 2007
2 déc. 2006 à 12:55
nickel ! c'est encore mieux !
merci :)
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 déc. 2006 à 14:32
merde lol je l'avais pas vu

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_physio Messages postés 26 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 3 février 2007 2
16 déc. 2006 à 22:50
Petite rectification

le layout par defaut d'une Jframe c'est BorderLayout
le layout par defaut d'une JPanel c'est flowLayout

PH¥§íØ
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
18 déc. 2006 à 12:06
en effet j'ai oublie de preciser j'etais rester sur les JPanel

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Rejoignez-nous