Swing bouton + label + textfield

krokodealer Messages postés 1 Date d'inscription dimanche 8 mai 2011 Statut Membre Dernière intervention 8 mai 2011 - 8 mai 2011 à 13:43
 Utilisateur anonyme - 8 mai 2011 à 18:36
bonjour à tous voila mon code
package testgui;
import javax.swing.*;
import java.awt.*;
 
public class Fenetre extends JFrame {
private JTextField textbox1;
private JLabel sortie;
/////////////get/set textbox1
public JTextField getTextbox1() {
return textbox1;
}
public void setTextbox1(JTextField textbox1) {
this.textbox1 = textbox1;
}
///////////get/set label sortie
public JLabel getSortie() {
return sortie;
}
 
public void setSortie(int alpha) {
this.sortie = sortie;
}
 

 
public Fenetre() {
 
JButton button1 = new JButton("go");
textbox1 = new JTextField(20);
JTextField textbox2 = new JTextField(20);
JLabel label1 new JLabel("x ");
JLabel label2 new JLabel("y ");
sortie = new JLabel("");

JPanel panneau = new JPanel(null);
textbox1.setBounds(50, 50, 120, 30);
textbox2.setBounds(50, 100, 120, 30);
button1.setBounds(200, 65, 75, 35);
sortie.setBounds(100, 150, 60, 30);
label1.setBounds(30, 50, 60, 30);
label2.setBounds(30, 100, 60, 30);
 
panneau.add(sortie);
panneau.add(label1);
panneau.add(textbox1);
panneau.add(label2);
panneau.add(textbox2);
panneau.add(button1);
 
JFrame frame = new JFrame("Calculatrice");
frame.setContentPane(panneau);
frame.pack();
frame.setSize(360, 640);
frame.setVisible(true);
 
MoteurCalcul moteurCalcul = new MoteurCalcul(this);
button1.addActionListener(moteurCalcul);
 
}
 
public static void main(String[] args) {
 
Fenetre fenetre = new Fenetre();
 
}
 

}

package testgui;
 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
 
public class MoteurCalcul implements ActionListener {
private Fenetre fen;
 
public MoteurCalcul(Fenetre fen) {
super();
this.fen = fen;
}
 
public void actionPerformed(ActionEvent événement) {
int alpha = 0 , beta;
try {
alpha = Integer.parseInt(fen.getTextbox1().getText());
JOptionPane.showMessageDialog(fen,
"Valeur  "+alpha, "valeur alpha",
JOptionPane.INFORMATION_MESSAGE);
fen.setSortie(alpha);
} catch (NumberFormatException nfe) {
//alpha n'est pas un int !
}
}
 
}

mon problème est que je n'arrive pas a écrire dans le label le int écrit dans la textbox a l'aide du bouton
je sais comment afficher une msgbox mais pas pour le label je bloque
merci à vous

1 réponse

Utilisateur anonyme
8 mai 2011 à 18:36
Une mise au point sur les setters ne serait pas du luxe.

Ta classe possède des attributs. Ces attributs peuvent être envoyés (par les getters) ou modifiées par les setters. Par un conséquence un setter va changer un attribut et prendra un seul paramètre du même type. SI tu utilises certains framework et notamment pour l'ORM, il faut vraiment que tu respectes ceci.

public void setNomAttribut( TypeAttribut attribut){
     this.attribut =  attribut; // le paramètre peut avoir un nom différent mais exactement le même type
}


Pour ta méthode setSortie , elle ne sert -strictement- à rien avec son code. Je t'explique :

public void setSortie(int alpha) {
this.sortie  = sortie;
}


Ton this.sortie sortie ne sert à rien. Tu changes la valeur de ton objet sortie par lui même. Je peux penser que tu avais voulu mettre alpha dans ton JLabel sortie. Si tu fais un this.sortie alpha, tu feras partir lever une exception qui fera éventuellement planter ton programme. Car on n'affecte pas un entier à un JLabel.

Le mieux est que tu utilises cette fonction :

public void setTexteSortie( String alpha ){ // tu auras à caster ton int en String 
     sortie.setText(alpha); // ou alors sortie = new JLabel(alpha), je ne sais plus si setText existe pour les JLabel
}

--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
Rejoignez-nous