Ich habe folgendes Problem:
Ich habe eine Klasse namens Fenster, in der befinden sich unter anderem 2 Buttons, die eine Zoomfunktion für eine Komponente namens Platine bereitstellen sollen. Jedoch erzählt mir JBuilder, ich könnte auf die Variable in Platine nicht zugreifen, da man aus einem statischen Kontext nicht auf nicht-statische Sachen zugreifen könnte.
Der Code dazu:
Fenster.java
Der Anfang von Platine.java
Das Programm wird gestartet, indem ich in einer anderen Klasse eine Instanz von Fenster erzeuge (aus der main() heraus)
Kann mir wer erklären, woher es kommt, dass public void actionPerformed(..) als static angenommen wird, und wie ich das vermeiden/umgehen kann.
Ich habe eine Klasse namens Fenster, in der befinden sich unter anderem 2 Buttons, die eine Zoomfunktion für eine Komponente namens Platine bereitstellen sollen. Jedoch erzählt mir JBuilder, ich könnte auf die Variable in Platine nicht zugreifen, da man aus einem statischen Kontext nicht auf nicht-statische Sachen zugreifen könnte.
Der Code dazu:
Fenster.java
Code:
public class Fenster
extends JFrame implements ActionListener
{
public Fenster(String titelText)
{
this.setTitle(titelText);
this.setDefaultCloseOperation(3);
this.getContentPane().setLayout(null);
Platine erstePlatine = new Platine();
this.getContentPane().add(erstePlatine);
erstePlatine.setBounds(0, 0, 600, 600);
JButton zoomIn = new JButton("+");
JButton zoomOut = new JButton("-");
this.getContentPane().add(zoomIn);
zoomIn.setBounds(0, 600, 50, 30);
this.getContentPane().add(zoomOut);
zoomOut.setBounds(40, 600, 50, 30);
zoomOut.addActionListener(this);
this.setSize(1152, 800);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Platine.grid++; //müsste noch zwischen den Buttons unterscheiden, aber erstmal egal
}
}
Der Anfang von Platine.java
Code:
public class Platine
extends JPanel
{
Graphics2D g2 = null;
Bauteil teil1 = new Bauteil(Color.red, 50, 50);
Bauteil teil2 = new Bauteil(Color.green, 200, 300);
int grid = 50;
int gridXOffset = 10;
int gridYOffset = 10;
...
Das Programm wird gestartet, indem ich in einer anderen Klasse eine Instanz von Fenster erzeuge (aus der main() heraus)
Kann mir wer erklären, woher es kommt, dass public void actionPerformed(..) als static angenommen wird, und wie ich das vermeiden/umgehen kann.