Variable visible dans les methodes
Résolu
Templier Nocturne
Messages postés
9989
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je débute en java, et je n'arrive pas à créer des variables modifiables par les méhodes de la classe.
Voici un extrait de mon code :
Mon problème est le suivant : J'aimerais pouvoir utiliser et modifier nbr1 dans ma methode methode1 de manière à conserver les modifications.
mais :
- si je déclare methode1 static, impossible de modifier nbr1 dedans
- si je ne déclare pas methode 1 static, impossible de l'appeler depuis main
Peut-on m'indiquer une solution s'il vous plait ?
Merci d'avance :)
Je débute en java, et je n'arrive pas à créer des variables modifiables par les méhodes de la classe.
Voici un extrait de mon code :
public class maClass
{
private String nbr1 = new String("0"); //ma variable
public void methode1(JTextField display, char t) //ma methode
{
nbr1 += t; //l'appel de ma variable
}
public static void main(String[] args)
{
JFrame fenetre = new JFrame();
fenetre.setSize(650, 450);
fenetre.setVisible(true);
JPanel pbutton= new JPanel();
pbutton.setLayout(null);
pbutton.setBounds(30,50,200,110);
fenetre.add(pbutton);
final JTextField display = new JTextField();
display.setBounds(20,20, 600, 80);
JButton b1 = new JButton("1");
b1.setBounds(20, 120, 100, 50);
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
methode1(display, '1'); // l'appel de ma methode
}
});
pbutton.add(display);
pbutton.add(b1);
}
}
Mon problème est le suivant : J'aimerais pouvoir utiliser et modifier nbr1 dans ma methode methode1 de manière à conserver les modifications.
mais :
- si je déclare methode1 static, impossible de modifier nbr1 dedans
- si je ne déclare pas methode 1 static, impossible de l'appeler depuis main
Peut-on m'indiquer une solution s'il vous plait ?
Merci d'avance :)
A voir également:
- Variable visible dans les methodes
- Clé usb non visible - Guide
- Compte facebook désactivé mais toujours visible - Guide
- Excel ligne toujours visible - Guide
- Capture d'écran whatsapp visible - Accueil - Messagerie instantanée
- Ordinateur non visible sur le réseau windows 11 - Forum Réseau
D'un point de vue de la programmation objet, il serait mieux de mettre tout ton code dans la classe et de n'avoir dans ton main que la création d'un objet de cette classe.
Donc a minima, ceci :
public class maClass { private String nbr1 = new String("0"); //ma variable public void methode1(JTextField display, char t) //ma methode { nbr1 += t; //l'appel de ma variable } public maClass() { JFrame fenetre = new JFrame(); fenetre.setSize(650, 450); fenetre.setVisible(true); JPanel pbutton= new JPanel(); pbutton.setLayout(null); pbutton.setBounds(30,50,200,110); fenetre.add(pbutton); final JTextField display = new JTextField(); display.setBounds(20,20, 600, 80); JButton b1 = new JButton("1"); b1.setBounds(20, 120, 100, 50); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { methode1(display, '1'); // l'appel de ma methode } }); pbutton.add(display); pbutton.add(b1); } public static void main(String[] args) { new maClass(); } }Même si des constructions comme ceci seraient bienvenue :
public class maClass extends JFrame { private String nbr1 = "0"; //ma variable private final JTextField display = new JTextField(); public void methode1(JTextField display, char t) // ma methode { nbr1 += t; // l'appel de ma variable } public maClass() { super(); setSize(650, 450); JPanel pbutton = new JPanel(); pbutton.setLayout(null); pbutton.setBounds(30,50,200,110); add(pbutton); display.setBounds(20,20, 600, 80); JButton b1 = new JButton("1"); b1.setBounds(20, 120, 100, 50); /* // avant Java 8 b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { methode1(display, '1'); // l'appel de ma methode } }); */ // en Java 8 b1.addActionListener(() -> methode1(display, '1')); pbutton.add(display); pbutton.add(b1); } public static void main(String[] args) { JFrame frame = new maClass(); frame.setVisible(true); } }