Probleme Label / setText [JAVA]
Résolu
zelosien
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
choubaka Messages postés 39442 Date d'inscription Statut Modérateur Dernière intervention -
choubaka Messages postés 39442 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un petit souci, je pose ma question car je planche complètement :(.
Je reprend doucement le java et j'ai un projet ou je doit créer une une calculette (jusque la rien de très compliqué)
J'ai donc un actionListener sur chaque bouton affin que lorsque l'utilisateur clique sur un bouton le texte de celui ci s'affiche dans le label. OR ...
si je clique sur n'importe quel bouton le texte s'affiche mais l'ancien texte reste affiché lui aussi ce qui rend la lecture du label complément impossible pour l'utilisateur.
le code étant encore très cour et pas complexe du tout je me permet de vous poster le code pour écouter vos suggestions :)
par avance merci pour vos réponses .
J'ai un petit souci, je pose ma question car je planche complètement :(.
Je reprend doucement le java et j'ai un projet ou je doit créer une une calculette (jusque la rien de très compliqué)
J'ai donc un actionListener sur chaque bouton affin que lorsque l'utilisateur clique sur un bouton le texte de celui ci s'affiche dans le label. OR ...
si je clique sur n'importe quel bouton le texte s'affiche mais l'ancien texte reste affiché lui aussi ce qui rend la lecture du label complément impossible pour l'utilisateur.
le code étant encore très cour et pas complexe du tout je me permet de vous poster le code pour écouter vos suggestions :)
import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.lang.*; public class Main_Frame { public static void main(String[] args) { JFrame jf = new Main("Calculatrice"); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); jf.setSize(400,450); jf.setVisible(true); } } class Main extends JFrame implements ActionListener { //attribut private JP_Ecran jp_ecran; public JLabel ecran; private JPanel jp_calcule; private String[] tab_string_calcule = {"1", "2", "3", "4", "5", "+", "-", "6", "7", "8", "9", "0", "*", "/", "a", "x", "y", "(", ")", ".", "=", "<-", "C"}; private JButton[] tab_button_calcule = new JButton[tab_string_calcule.length]; private JPanel jp_South; private JPanel jp_option; private String[] tab_string_option = {"Simplifier", "Derivée", "Afficher", "ART", "NPI", "Evaluer" }; private JButton[] tab_button_option = new JButton[tab_string_option.length]; private JPanel jp_evaluer; private JPanel jp_variable; private JTextField variable_a; private JLabel lbl_a = new JLabel("Variable A : "); private JTextField variable_x; private JLabel lbl_x = new JLabel("Variable X : "); private JTextField variable_y; private JLabel lbl_y = new JLabel("Variable Y : "); // constructeur public Main(String name) { super(name); initComposant(); } private void initComposant() { jp_ecran = new JP_Ecran(); //new GridLayout(1,1) Font police = new Font("Arial", Font.BOLD, 20); this.ecran = new JLabel("012345"); this.ecran.setFont(police); this.ecran.setHorizontalAlignment(JLabel.RIGHT); this.ecran.setPreferredSize(new Dimension(350, 50)); this.jp_ecran.add(this.ecran); this.jp_calcule = new JPanel(); this.jp_South = new JPanel(new BorderLayout()); this.jp_South.setPreferredSize(new Dimension(280, 170)); this.jp_South.setBackground(Color.orange); this.jp_option = new JPanel(); this.jp_evaluer = new JPanel(); this.jp_variable = new JPanel(new GridLayout(3,2)); for(int i = 0; i < this.tab_string_calcule.length; i++) { this.tab_button_calcule[i] = new JButton(this.tab_string_calcule[i]); this.tab_button_calcule[i].setPreferredSize(new Dimension(50, 40)); tab_button_calcule[i].addActionListener(this); this.jp_calcule.add(this.tab_button_calcule[i]); } for(int i = 0; i < this.tab_string_option.length; i++) { this.tab_button_option[i] = new JButton(this.tab_string_option[i]); this.tab_button_option[i].setPreferredSize(new Dimension(120, 40)); tab_button_option[i].addActionListener(this); this.jp_option.add(this.tab_button_option[i]); } this.variable_a = new JTextField("0", 3); this.jp_variable.add(lbl_a); this.jp_variable.add(variable_a); this.variable_x = new JTextField("0", 3); this.jp_variable.add(lbl_x); this.jp_variable.add(variable_x); this.variable_y = new JTextField("0", 3); this.jp_variable.add(lbl_y); this.jp_variable.add(variable_y); this.jp_evaluer.add(this.tab_button_option[this.tab_button_option.length-1]); this.jp_evaluer.add(jp_variable); this.jp_South.add(this.jp_evaluer, BorderLayout.SOUTH); this.jp_South.add(this.jp_option, BorderLayout.CENTER); this.add(jp_ecran,BorderLayout.NORTH); this.add(jp_calcule,BorderLayout.CENTER); this.add(jp_South,BorderLayout.SOUTH); } @Override public void actionPerformed(ActionEvent e) { //On affiche le chiffre en plus dans le label String str = ((JButton)e.getSource()).getText(); if(!ecran.getText().equals("0")) str = this.ecran.getText() + str; this.ecran.setText(str); // <--- PROBLEME ICI :/ } } class JP_Ecran extends JPanel { public JP_Ecran() { this.setPreferredSize(new Dimension(380, 60)); } public void paintComponent(Graphics g) { g.drawRoundRect(7, 5, 380, 50, 10, 10); } }
par avance merci pour vos réponses .
A voir également:
- Probleme Label / setText [JAVA]
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
7 réponses
Bonjour
Et comme ça ?? ça devrait s'effacer non ?
if(!ecran.getText().equals("0"))
str = this.ecran.getText() + str;
this.ecran.setText("");
this.ecran.setText(str); // <--- PROBLEME ICI :/
}
Et comme ça ?? ça devrait s'effacer non ?
if(!ecran.getText().equals("0"))
str = this.ecran.getText() + str;
this.ecran.setText("");
this.ecran.setText(str); // <--- PROBLEME ICI :/
}
J'avais déjà essayé et sa ne change malheureusement rien :/
Je comprend vraiment pas cette erreur ^^'
Je comprend vraiment pas cette erreur ^^'
le problème est là
str = this.ecran.getText() + str;
tu fais une concaténation de ce qu'il y a déjà...
donc forcément, ça affiche tout
str = this.ecran.getText() + str;
tu fais une concaténation de ce qu'il y a déjà...
donc forcément, ça affiche tout
Non le problème n'est pas que sa affiche tout (car c'est l'écran d'une calculatrice) le problème est que sa affiche par dessus l'ancien texte => "superposé"
exemple:
au démarrage l'écran affiche 12345.
si j'appuie sur le bouton 9
cela va me décalé mon 12345 pour ajouter mon 9 a la fin => 123459
et cela va être superposé a l'ancien texte => 12345
j'aurai donc 2 textes dans 1 label superposé :/
(merci de continué a me répondre car j'ai toujours pas trouvé sur d'autre forum)
exemple:
au démarrage l'écran affiche 12345.
si j'appuie sur le bouton 9
cela va me décalé mon 12345 pour ajouter mon 9 a la fin => 123459
et cela va être superposé a l'ancien texte => 12345
j'aurai donc 2 textes dans 1 label superposé :/
(merci de continué a me répondre car j'ai toujours pas trouvé sur d'autre forum)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question