Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

non-static variable this cannot be referenced from a static context

1 réponse
Avatar
bartoli.nicolas
Bonsoir à tous,
mon probleme est le suivant :

Affichage.java [37:1] non-static variable this cannot be referenced
from a static context
JFrame frame1 = new Bunch();
^
1 error
Errors compiling Affichage.

Je ne vois pas comment le résoudre.


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Affichage extends JFrame {

//Gestion d'affichage des allumettes du jeu
public Affichage() {
//Titre de la fenetre
super("Allumettes");
//Définition de la position de la fenetre
setLocation(300, 200);
//Définition de la taille de la fenetre
setSize(830, 490);
//Gestion de sortie
ExitWindow exit = new ExitWindow();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Constructeur
MapPane map = new MapPane();
getContentPane().add(map);
addWindowListener(exit);

}
//Classe principale
public static void main(String[] arguments) {
//Utilisation de l'interface du systeme qui execute le code
(ici win2K)
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.err.println("impossible d'appliquer l'apparence
systeme : " +e);
}
//Affichage de allumettes
Affichage frame = new Affichage();
frame.show();
//Affichage de la console
JFrame frame1 = new Bunch();
//Afficher frame1
frame1.show();
}



//Gestion d'affichage du menu de controle des allumettes
public class Bunch extends JFrame implements ActionListener {
//Creation des 3 bouttons
JButton une = new JButton(" | ");
JButton deux = new JButton(" | | ");
JButton trois = new JButton(" | | | ");





public Bunch() {
//Intitulé de la fenetre
super("Choix du nombres d'allumettes à retirer");

//Définition Taille de la fenetre
setSize(260, 260);
//Définition de la positions de la fenetre
setLocation(10, 20);
//Ajout des écouteurs d'action aux 3 objets JButton
une.addActionListener(this);
deux.addActionListener(this);
trois.addActionListener(this);
//Constructeur
JPanel pane = new JPanel();
//Creation du layout
GridLayout family = new GridLayout(3, 3, 10, 10);
//Répartition des 3 bouttons dans la fenetre
pane.setLayout(family);
//Ajout des bouttons
pane.add(une);
pane.add(deux);
pane.add(trois);
//Affichage
setContentPane(pane);
//Gestion de sortie
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}


//actions
public void actionPerformed(ActionEvent evt) {

Object source = evt.getSource();
if (source == une)
setTitle("Une");
else if (source == deux)
setTitle("deux");
else if (source == trois)
setTitle("Trois");

repaint();
}


}

class MapPane extends JPanel {
public void paintComponent(Graphics comp) {
Graphics2D comp2D = (Graphics2D)comp;
Color black = new Color(0, 0, 0);

int x=30;
int y=30;
for (int i=0; i<10 ; i++)
{
comp2D.setColor(black);
comp2D.fillRect(x,y, 50, 400);
x=x+80;

}
}
}
//Class gestion de sortie
class ExitWindow extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
}

1 réponse

Avatar
Nicolas CUVELIER
Nico82 wrote:

Bonsoir à tous,
mon probleme est le suivant :

Affichage.java [37:1] non-static variable this cannot be referenced
from a static context
JFrame frame1 = new Bunch();
^
1 error
Errors compiling Affichage.

Je ne vois pas comment le résoudre.



Ton problème est le suivant :
ta classe Bunch est interne à ta classe Affichage.
Deux solutions :
1/ si la classe DOIT être interne, l'instanciation de ton objet doit se
faire ainsi :

...
Affichage frame = new Affichage();
...
JFrame frame1 = frame.new Bunch();
...

2/ sinon, tu peux sortir la classe Bunch de la classe Affichage, soit en la
mettant dans un fichier à part, soit en la déplaçant à la fin de ton
fichier (sans oublier d'enlever le "public" de la classe).

Bonne chance !

--
El Bucheron ( @ @ )
____________________________________oOOo-( )-oOOo________