IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Petit soucis avec Swing


Sujet :

AWT/Swing Java

  1. #1
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut Petit soucis avec Swing
    Bonjours tlm,

    Voilà je me suis lancer dans le java depuis une semaine. Je me suis fixer comme objectif de crée une petite calculatrice. J'ai donc utiliser l'interface graphique Swing.

    voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    import javax.swing.* ;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Calculatrice extends JFrame implements ActionListener{
    		private JPanel container = null;//Déclaration de l'objet JPanel	
    		private FlowLayout layout = null ;//Déclaration de notre layout
    		private JLabel texte = null;
    		private JTextField nb1 = null;
    		private JTextField nb2 = null;
    		private JLabel texte1 = null;
    		private JButton button = null;
    		private JButton addition = null;
    		private JButton soustraction = null;
    		private JButton division = null;
    		private JButton multiplication = null;
     
    		public Calculatrice(){
     
    			build();
    		}
     
    		private void build(){
    		this.setTitle("Calcule de votre Moyenne"); //On donne un titre à l’application
    		this.setSize(500,500); //On donne une taille à notre fenêtre
    		this.setLocationRelativeTo(null); //On centre la fenêtre sur l’écran
    		this.setResizable(false) ; //On interdit 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
     
    			//On lui spécifie un container principal
    			this.setContentPane(getContainer());
    }
     
    	private JPanel getContainer(){
    		layout = new FlowLayout(); //Instanciation du layout
    		layout.setAlignment(FlowLayout.CENTER);//On centre les composants
     
    		container = new JPanel() ; //On crée notre objet
    		container.setLayout(layout); //On applique le layout
     
    		texte = new JLabel() ;//On crée notre objet
    		texte.setPreferredSize(new Dimension(250,25)) ;//On lui donne une taille
    		texte.setText("Bienvenu dans la Calculatrice de Luffy"); //On lui donne un texte
     
    		texte1 = new JLabel();
    		texte1.setPreferredSize(new Dimension(300,300));
    		texte1.setText(" Le résultat est : ...");
     
    		addition = new JButton();
    		addition.setPreferredSize(new Dimension(50,25));
    		addition.setText("+");
    		addition.addActionListener(this);
     
    		soustraction = new JButton();
    		soustraction.setPreferredSize(new Dimension(50,25));
    		soustraction.setText("-");
    		soustraction.addActionListener(this);
     
    		division = new JButton();
    		division.setPreferredSize(new Dimension(50,25));
    		division.setText("/");
    		division.addActionListener(this);
     
    		multiplication = new JButton();
    		multiplication.setPreferredSize(new Dimension(50,25));
    		multiplication.setText("*");
    		multiplication.addActionListener(this);
     
     
    		button = new JButton();
    		button.setText("VALIDER");
    		button.setPreferredSize(new Dimension(100,25));
    		button.addActionListener(this);//On ajoute la fenêtre en tant qu'écouteur du bouton
     
    		nb1 = new JTextField();
    		nb1.setPreferredSize(new Dimension(300,25));
     
    		nb2 = new JTextField();
    		nb2.setPreferredSize(new Dimension(300,25));
     
    		container.add(texte);//On l'ajoute au container
    		container.add(texte1);//On l'ajoute au container
    		container.add(button);
    		container.add(addition);
    		container.add(multiplication);
    		container.add(soustraction);
    		container.add(division);
    		container.add(nb1);
    		container.add(nb2);
     
    		return container ;
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		int nombre1=0,nombre2=0,somme=0;
     
    		if ( e.getSource() == button)
    			{
     
     
     
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
     
    				somme= nombre1 + nombre2;
     
    				  texte.setText("Le résultat de " + nombre1 + " + "+ nombre2 + " est " + somme); //On nombre dans le label
     
    			}
     
    			if ( e.getSource() == addition)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 + nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == soustraction)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
     
    				somme= nombre1 - nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == division)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 / nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
     
    			if ( e.getSource() == multiplication)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 * nombre2;
    				texte1.setText(" Le résultat est : " + somme);}
     
    }
    		public static void main(String[] args){
    		Calculatrice gui = new Calculatrice(); //On crée une nouvelle instance de notre fenêtre
    		gui.setVisible(true);
    	}
    }

    Mon problème est le suivant :

    Je n'arrive pas a placer correctement mes différents éléments. J'aimerais donc savoir comment pourrait-je les placer comme je le souhaite dans mon panel.
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Il faut que tu utilise des layout, ce sont des gestionnaire de placement qui permette de situer ses composants dans la fenetre, il y de bon tutoriaux à ce sujet sur ce site.
    Dans ton cas je pense que tu auras besoin d'un GridLayout pour les boutons de ta calculatrice et surement un BorderLayout pour le reste
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    Y a juste un petite truc qui me turlupine , les layout sont affecter au Panel donc est-til possible de lui indiquer plusieur layout ???


    Si oui comment savoir quels layout sera appliquer a tel element ?


    Pour l'instant j'ai mis un GridLayout(5,5) et les elements sont coler et de grande taille ? il ne prend plus en compte les dimension que j'ai mis a mes boutons


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import javax.swing.* ;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Calculatrice extends JFrame implements ActionListener{
    		private JPanel container = null;//Déclaration de l'objet JPanel	
    		private FlowLayout layout = null ;//Déclaration de notre layout
    		private JLabel texte = null;
    		private JTextField nb1 = null;
    		private JTextField nb2 = null;
    		private JLabel texte1 = null;
    		private JButton button = null;
    		private JButton adition = null;
    		private JButton soustraction = null;
    		private JButton division = null;
    		private JButton multiplication = null;
     
    		public Calculatrice(){
     
    			build();
    		}
     
    		private void build(){
    		this.setTitle("Calcule de votre Moyenne"); //On donne un titre à l’application
    		this.setSize(500,500); //On donne une taille à notre fenêtre
    		this.setLocationRelativeTo(null); //On centre la fenêtre sur l’écran
    		this.setResizable(false) ; //On interdit 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
     
    			//On lui spécifie un container principal
    			this.setContentPane(getContainer());
    }
     
    	private JPanel getContainer(){
    		layout = new FlowLayout(); //Instanciation du layout
    		layout.setAlignment(FlowLayout.CENTER);//On centre les composants
     
     
    		container = new JPanel() ; //On crée notre objet
    		//container.setLayout(layout); //On applique le layout
    		container.setLayout( new GridLayout(8,2));
     
    		texte = new JLabel() ;//On crée notre objet
    		texte.setPreferredSize(new Dimension(250,25)) ;//On lui donne une taille
    		texte.setText("Bienvenu dans la Calculatrice de Luffy"); //On lui donne un texte
     
    		texte1 = new JLabel();
    		texte1.setPreferredSize(new Dimension(300,300));
    		texte1.setText(" Le résultat est : ...");
     
    		adition = new JButton();
    		adition.setPreferredSize(new Dimension(50,25));
    		adition.setText("+");
    		adition.addActionListener(this);
     
    		soustraction = new JButton();
    		soustraction.setPreferredSize(new Dimension(50,25));
    		soustraction.setText("-");
    		soustraction.addActionListener(this);
     
    		division = new JButton();
    		division.setPreferredSize(new Dimension(50,25));
    		division.setText("/");
    		division.addActionListener(this);
     
    		multiplication = new JButton();
    		multiplication.setPreferredSize(new Dimension(50,25));
    		multiplication.setText("*");
    		multiplication.addActionListener(this);
     
     
     
     
    		nb1 = new JTextField();
    		nb1.setPreferredSize(new Dimension(300,25));
     
    		nb2 = new JTextField();
    		nb2.setPreferredSize(new Dimension(300,25));
     
    		container.add(texte);//On l'ajoute au container
    		container.add(texte1);//On l'ajoute au container
    		container.add(adition);
    		container.add(multiplication);
    		container.add(soustraction);
    		container.add(division);
    		container.add(nb1);
    		container.add(nb2);
     
    		return container ;
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		int nombre1=0,nombre2=0,somme=0;
     
    			if ( e.getSource() == adition)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 + nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == soustraction)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
     
    				somme= nombre1 - nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == division)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 / nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
     
    			if ( e.getSource() == multiplication)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 * nombre2;
    				texte1.setText(" Le résultat est : " + somme);}
     
    }
    		public static void main(String[] args){
    		Calculatrice gui = new Calculatrice(); //On crée une nouvelle instance de notre fenêtre
    		gui.setVisible(true);
    	}
    }
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Les layouts se basent sur la preferredSize des composants pour affecter la taille. Mais si tu agrandis ta frame (ou lui définis une taille très grande), tes composants vont en général se débrouiller pour occuper toute la place disponible.

    Donc à toi de définir aussi une taille de fenêtre en adéquation avec la taille des boutons que tu veux avoir au final.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Oui c'est possible.

    Pour cela :
    1) fait un dessin
    2) identifie les partie et delimite les zones pour qu'elle ressemble a des layout connu (flowlayout, borderlayout, gridlayout, ...)
    3) tu crée un panel pour le plus petit, tu lui defini le layout, et tu ajoute ce qui va dedans.
    4) tu crée le panel suivant, tu lui defini le layout, et tu ajoute ce qui va dedans (JPanel ou composant).
    5) ..


    Ainsi tu va avoir plusieurs layout imbriqué.
    Il n'est pas possible pour une fenetre d'avoir plusieurs layout.

  6. #6
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    J'arrive vraiment pas a disposer les éléments comme je veux .

    Soit je n'est pas bien compris la démarche soit je m'y prend mal :

    voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import javax.swing.* ;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Calculatrice extends JFrame implements ActionListener{
    		private JPanel container = null;
    		private JPanel container1 = null;
    		private JPanel container2 = null;
    		//Déclaration de l'objet JPanel	
    		private FlowLayout layout = null ;//Déclaration de notre layout
    		private GridLayout layout1 = null;
    		private JLabel texte = null;
    		private JTextField nb1 = null;
    		private JTextField nb2 = null;
    		private JLabel texte1 = null;
    		private JButton button = null;
    		private JButton adition = null;
    		private JButton soustraction = null;
    		private JButton division = null;
    		private JButton multiplication = null;
     
    		public Calculatrice(){
     
    			build();
    		}
     
    		private void build(){
    		this.setTitle("Calcule de votre Moyenne"); //On donne un titre à l’application
    		this.setSize(500,500); //On donne une taille à notre fenêtre
    		this.setLocationRelativeTo(null); //On centre la fenêtre sur l’écran
    		this.setResizable(true) ; //On interdit 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
     
    			//On lui spécifie un container principal
    			this.setContentPane(getcontainer());
    			this.setContentPane(getcontainer1());
    			this.setContentPane(getcontainer2());
    }
    		private JPanel getcontainer(){
    			layout = new FlowLayout(); //Instanciation du layout
    			layout.setAlignment(FlowLayout.CENTER);//On centre les composants
     
    			texte = new JLabel() ;//On crée notre objet
    			texte.setPreferredSize(new Dimension(250,25)) ;//On lui donne une taille
    			texte.setText("Bienvenu dans la Calculatrice de Luffy"); //On lui donne un texte
     
    			container = new JPanel() ; //On crée notre objet
    			//container.setLayout(layout); //On applique le layout
    			container.setLayout( layout);
    			container.add(texte);//On l'ajoute au container
    			return container;
    		}
    		private JPanel getcontainer2(){
    				layout1 = new GridLayout(2,2);
    				container1 = new JPanel() ;
    				container1.setLayout(layout);
     
    				adition = new JButton();
    				adition.setPreferredSize(new Dimension(50,25));
    				adition.setText("+");
    				adition.addActionListener(this);
     
    				soustraction = new JButton();
    				soustraction.setPreferredSize(new Dimension(50,25));
    				soustraction.setText("-");
    				soustraction.addActionListener(this);
     
    				division = new JButton();
    				division.setPreferredSize(new Dimension(50,25));
    				division.setText("/");
    				division.addActionListener(this);
     
    				multiplication = new JButton();
    				multiplication.setPreferredSize(new Dimension(50,25));
    				multiplication.setText("*");
    				multiplication.addActionListener(this);
     
    				container1.add(adition);
    				container1.add(multiplication);
    				container1.add(soustraction);
    				container1.add(division);
     
    				return container1;
    		}
     
    	private JPanel getcontainer1(){
    		layout = new FlowLayout(); //Instanciation du layout
    		layout.setAlignment(FlowLayout.CENTER);//On centre les composants
     
     
    		container2 = new JPanel() ; //On crée notre objet
    		//container.setLayout(layout); //On applique le layout
    		container2.setLayout( layout);
     
     
    		texte1 = new JLabel();
    		texte1.setPreferredSize(new Dimension(300,300));
    		texte1.setText(" Le résultat est : ...");
     
     
    		nb1 = new JTextField();
    		nb1.setPreferredSize(new Dimension(100,25));
     
    		nb2 = new JTextField();
    		nb2.setPreferredSize(new Dimension(100,25));
     
    		container2.add(nb1);
    		container2.add(nb2);
    		container2.add(texte1);//On l'ajoute au container
    		return container2 ;
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		int nombre1=0,nombre2=0,somme=0;
     
    			if ( e.getSource() == adition)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 + nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == soustraction)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
     
    				somme= nombre1 - nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == division)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 / nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
     
    			if ( e.getSource() == multiplication)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 * nombre2;
    				texte1.setText(" Le résultat est : " + somme);}
     
    }
    		public static void main(String[] args){
    		Calculatrice gui = new Calculatrice(); //On crée une nouvelle instance de notre fenêtre
    		gui.setVisible(true);
    	}
    }
    Le problème c'est qu'on voit uniquement le +-/*...

    En fait je voudrait les signe +-/* a droit ( en GridLayout ) et en face a gauche au meme niveau les 2 FieldText nb1 et nb2 puis en dessous de tous sa le résultat ...

    Sa me semble pas si difficile en théorie mais en pratique cela devient vite prise de tête . Quelqu'un pourrait clairement me dire comment procédé ?
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  7. #7
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    en gros dans chaque panel du doit ajouter un LayoutManager

    il faut savoir que le placement des composants en java est l'une des parties les plus difficles

    moi personnellement je mes suis basé sur ce cours de l'université de sophia-antipolis :

    http://deptinfo.unice.fr/~grin/messu...alitesGUI1.pdf

    j'espere que ca va t'aider bonne chance

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Alors c'est normal que tu n'ai plus que les bouton car ce que tu fais c'est que tu ajoute dans ta JFrame plusieurs composant !!!
    Hors, tu ne l'as pas configuré pour en recevoir plusieurs et a la fin tu n'as plus que le dernier !!!




    On va le faire et tu verra d'un coup comment ca marche !!! tu y était presque !!!.




    Citation Envoyé par Luffy49
    Le problème c'est qu'on voit uniquement le +-/*...

    En fait je voudrait les signe +-/* a droit ( en GridLayout ) et en face a gauche au meme niveau les 2 FieldText nb1 et nb2 puis en dessous de tous sa le résultat ...

    Sa me semble pas si difficile en théorie mais en pratique cela devient vite prise de tête . Quelqu'un pourrait clairement me dire comment procédé ?
    Ce n'est pas difficile de le réaliser. Pour ce faire tu as besoin de bien connaittre les différent Layout manager (les plus simple suffise ... GridLayout, FlowLayout, BorderLayout).
    Si tu as fait le dessin comme je te l'avais dis, tu devrais comprendre le code que je te passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    public class Calculatrice extends JFrame implements ActionListener{
     
    		//Déclaration des objets membres de la classe
    		private JLabel texte = null;
    		private JTextField nb1 = null;
    		private JTextField nb2 = null;
    		private JLabel texte1 = null;
    		private JButton adition = null;
    		private JButton soustraction = null;
    		private JButton division = null;
    		private JButton multiplication = null;
     
    		public Calculatrice(){
     
    			build();
    		}
     
    		private void build(){
    		this.setTitle("Calcule de votre Moyenne"); //On donne un titre à l’application
    		this.setSize(500,500); //On donne une taille à notre fenêtre
    		this.setLocationRelativeTo(null); //On centre la fenêtre sur l’écran
    		this.setResizable(true) ; //On interdit 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
     
    			//On lui spécifie un container principal
    			this.setContentPane(getcontainer());
    }
    		private JPanel getcontainer(){
    			// On va créer le pane pour la pub !! :D 
    			// JPanel panel_pub = new JPanel(); On va faire sans Panel pour voir que ca marche !!!
    				texte = new JLabel() ;//On crée notre objet
    				texte.setPreferredSize(new Dimension(250,25)) ;//On lui donne une taille
    				texte.setText("Bienvenu dans la Calculatrice de Luffy"); //On lui donne un texte
    				//panel_pub.add(texte);
     
    			// On va créer le panel pour les nombres
    			JPanel panel_nombre = new JPanel(new GridLayout(2,1,5,5)); // les deux dernieres valeurs sont l'écart entre les cellules
    				nb1 = new JTextField();
    				nb1.setPreferredSize(new Dimension(100,25));
    				panel_nombre.add(nb1);
     
    				nb2 = new JTextField();
    				nb2.setPreferredSize(new Dimension(100,25));
    				panel_nombre.add(nb2);
     
    			// On va créer le panel pour les touches
    			JPanel panel_touche = new JPanel(new GridLayout(2,2)); // un constructeur existe comme ceci, ca t'evite une ligne de plus !!!
     
    				adition = new JButton();
    				adition.setPreferredSize(new Dimension(50,25));
    				adition.setText("+");
    				adition.addActionListener(this);
    				panel_touche.add(adition); //adition a 2 D ;)
     
    				soustraction = new JButton();
    				soustraction.setPreferredSize(new Dimension(50,25));
    				soustraction.setText("-");
    				soustraction.addActionListener(this);
    				panel_touche.add(soustraction); // ici tu peux mettre plusieurs élément (jusqu'a 4 car tu l'as configuré pour ...)
     
    				division = new JButton();
    				division.setPreferredSize(new Dimension(50,25));
    				division.setText("/");
    				division.addActionListener(this);
    				panel_touche.add(division);
     
    				multiplication = new JButton();
    				multiplication.setPreferredSize(new Dimension(50,25));
    				multiplication.setText("*");
    				multiplication.addActionListener(this);
    				panel_touche.add(multiplication);
     
    			// On va créer un panel pour le résultat
    			JPanel panel_resultat = new JPanel(); // un panel ne serait pas necessaire car tu n'as qu'un seul objet, mais je sent que pour la suite ...
    				texte1 = new JLabel();
    				texte1.setPreferredSize(new Dimension(300,300));
    				texte1.setText(" Le résultat est : ...");
    				panel_resultat.add(texte1);
     
    			// On assemble le tout pour créer le seul et unique panneau qui t'intéresse.
    			JPanel panel_complet = new JPanel(new BorderLayout()); // un borderLayout contient 5 zone (Nord, Sud, Est, Ouest, et Centre)
    				panel_complet.add(texte /*panel_pub*/, BorderLayout.NORTH);
    				panel_complet.add(panel_nombre, BorderLayout.WEST);
    				panel_complet.add(panel_touche, BorderLayout.EAST);
    				panel_complet.add(panel_resultat, BorderLayout.SOUTH);
     
    			return panel_complet;
    		}
     
    	public void actionPerformed(ActionEvent e) {
    		int nombre1=0,nombre2=0,somme=0;
     
    			if ( e.getSource() == adition)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 + nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == soustraction)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
     
    				somme= nombre1 - nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    			if ( e.getSource() == division)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 / nombre2;
    				texte1.setText(" Le résultat est : " + somme);
    			}
     
    			if ( e.getSource() == multiplication)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				String nombre_test_2=nb2.getText();
    				nombre2=Integer.parseInt(nombre_test_2);
    				somme= nombre1 * nombre2;
    				texte1.setText(" Le résultat est : " + somme);}
     
    }
    		public static void main(String[] args){
    		Calculatrice gui = new Calculatrice(); //On crée une nouvelle instance de notre fenêtre
    		gui.setVisible(true);
    	}
    }
    Je t'ai mis des commentaire pour mieux comprendre !!

    Bon c'est pas le plus optimisé car par exemple il n'y a aucun alignement !!! Mais a toi de comprendre et d'amélioré avec ce que tu veux !!!
    Avec cet exemple d'encapsulation, tu devrais mieux comprendre comment marche les Manager et pourvoir t'amuser avec !!!

    @+

  9. #9
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    MERCI DU fond du coeur ^_^ j'ai lu ton code je les analyser et au lieux de le recopiez bêtement je les recrée entierement afin de me familiariser avec les élement.

    Le placement est pas trop mal mais n'est toujours pas optimal.

    Je me pose la question pour faire un espace entre le titre et les bouton d'opération je pensait a faire un JLabel vide avec une dimension pour faire mon espace ?? sa me paraît un peu de la bidouille y a pas plus simple ? ou plus optimal ?

    Encore merci a croc14 pour le temps que ta du passer a faire la réponse .
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  10. #10
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    Ah oui j'oubliais j'ai un petit probleme :

    J'ai ajouter des bouton ( 1 , 2 ,3, 4,5...) quand on clique dessus mon JtextField affiche le nombre désire style on apuye sur 1549 il affiche bien 1549. Puis quand je clique sur + il efface le JtextField et je voudrait qu'il mette résultat précédent dans une supervariable ( a l'instar des superglobal en php ) sa existe ??

    parcequ'il ne garde pas ma valeur que quand je clique sur egale il va dans l'actionlistener et initialise la variable.

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    ...
     
    public void actionPerformed(ActionEvent e) {
    		int nombre1=0,nombre2=0,somme=0,type=0,nombre_recup=0;
    		String recup="";
     
     
    		if ( e.getSource() == egal)
    		{
    			String nombre_test_2=nb1.getText();
    			nombre_recup=Integer.parseInt(nombre_test_2);
     
    			if(type==0)
    			{
    				somme=nombre1+nombre_recup;
    				texte1.setText(" Le résultat est : " + somme);
    			}
    		}
     
    			if ( e.getSource() == adition)
    			{
    				String nombre_test_1=nb1.getText();
    				nombre1=Integer.parseInt(nombre_test_1);
    				type=0;
    				nb1.setText("");
    			}
    ...
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  11. #11
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Tu peux utiliser un attriubut de ta classe pour stocker ton résultat courant. Mais je suis pas sur d'avoir bien compris.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  12. #12
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    Ba oui mais regarde quand je vait clicker sur + il va enregistrer le nombre dans nombre1 et va effacer le JtextField, lorsque je vais cliquer sur = il va allez dans
    public void actionPerformed(ActionEvent e) et va initialiser nombre1... et je eclipse m'oblige a initialiserla variable nombre1
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Ben oui, tu va utilisé une variable membre de ta classe (A, B, M ou meme ans)

    Cette variable tu la modifie ou a l'appuye d'une touche spéciale.
    Par exemple, M+ sur la casio fx permet d'enregistrer dans M [casio uniquement pris pour exemple],
    Pour ans, ben il change a chaque =.

    Tu as les deux cas de décrit (touche spéciale ou empilement de résultat). Les deux nécessitent la même ligne (à deux caractères prêt) sauf pas au même endroit !!!




    Connait tu la programmation objet ? Dans quel cadre réalise tu ce petit programme ? [si c'est pas trop indiscrêt ... ]

  14. #14
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    Je t'explique ma situation :

    Je suis en 2ème année de bts IG option ( Réseaux ) je suis actuellement admis en 1ere année d'ingenieur a SupINFO et comme la faiblesse de ceux qui sont en réseau c'est le développement je m'y met tout de suite ^_^.

    On a jamais fait de POO mais je m'y suis mis un peu. J'ai compris le fonctionnement cepandant l'attribut est initialiser malgré moi je ne sais pas comment y remedier.

    Faut t'il recrer une class ( objet ) pour le résultat ? je l'ai fait mais idem puisque dans mon Actionlistener je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat r=new restultat();
    il crée un nouvelle objet avec attribut résultat nombre1 et nombre2 cepandant quand j'apuye sur egale il retourne dans l'Actionlistener pour executer l'egal mais il rexecute alors :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat r=new restultat();
    Serait-je obliger de mettre un si devant la ligne ci-dessus ??
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  15. #15
    Membre actif Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Points : 247
    Points
    247
    Par défaut
    Voilà j'ai résolu mon problème j'ai mis les variable dans ma class principale en private int...

    Sinon le placement est pas trop mal mais n'est toujours pas optimal.

    Je me pose la question pour faire un espace entre le titre et les bouton d'opération je pensait a faire un JLabel vide avec une dimension pour faire mon espace ?? sa me paraît un peu de la bidouille y a pas plus simple ? ou plus optimal ?
    La connaissance n'est rien si elle n'est pas partagé

    Citation de Confucius :
    Ceux dont la connaissance est innée sont des hommes tout à fait supérieurs. Puis viennent ceux qui acquièrent cette connaissance par l'étude. Enfin, ceux qui, même dans la détresse, n'étudient pas : c'est le peuple.

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Ben pour ma part, je fais en ajoutant des JPanel !!!
    Je sais pas si c'est une méthode bien Pro !!!


    Apres si tu veux t'amuser, il y a des GridBagLayout (je crois que c'est ca !!!) ou la ca devient le bordel car tu gère toi même les % et taille de contour de tes colonne et le nombre de case que l'objet prend !!!


    SInon je suis bête, joue avec les bordures de ton objet !!!
    Normalement ca devrait marcher !!!

    édit :
    un truc pas trop mal !!! Dans le style de ce que tu cherche je pense !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    				texte.setPreferredSize(new Dimension(200,200));
    				texte.setVerticalAlignment(JLabel.TOP);
    				texte.setHorizontalAlignment(JLabel.CENTER);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petit soucis avec mon graveur
    Par Vador dans le forum Périphériques
    Réponses: 8
    Dernier message: 02/11/2005, 14h58
  2. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  3. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo