private inner class

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class MainFrame extends JFrame {
   static MainFrame fl;
   static MainFrame gl;
   static MainFrame bl;

   private static int zaehler = 0;
   
   MainFrame(String titel){
     super(titel);
     setSize(400,300);
     this.setDefaultCloseOperation(EXIT_ON_CLOSE);
   
   }
   
   
   
   public static void main(String[]args){
     
     fl = new MainFrame("FlowLayout");
     gl = new MainFrame("Gridlayout");
     bl = new MainFrame("BorderLayout");
     
     fl.setLayout(new FlowLayout());
     gl.setLayout(new GridLayout(4,4));
     bl.setLayout(new BorderLayout());
     
     for(int i = 1;i<=4;i++){
       fl.add(new JLabel("Jlabel"+i));
       gl.add(new JLabel("Jlabel"+i));
       bl.add(new JLabel("Jlabel"+i),BorderLayout.CENTER);
     }
     
     MainFrame button = new MainFrame("button");
     button.setSize(320,160);
     button.setVisible(true);
     button.setLayout(new GridLayout(1,2));
     JButton jb1 = new JButton("Previous");
     JButton jb2 = new JButton("Next");
     fl.setVisible(true);
     button.add(jb1);
     button.add(jb2);
     
     jb1.addActionListener(new ButtonListener());
     jb2.addActionListener(new ButtonListener());
     
     
   
     }
   
   
   private class ButtonListener implements ActionListener{
     
     public void actionPerformed(ActionEvent e) {
       if(e.getActionCommand().equals("Previous"))zaehler--;
       if(e.getActionCommand().equals("Next"))zaehler++;
       if(zaehler%3 == 0){fl.setVisible(true);gl.setVisible(false);bl.setVisible(false);}
       if(zaehler%3 == 1){fl.setVisible(false);gl.setVisible(false);bl.setVisible(true);}
       if(zaehler%3 == 2){fl.setVisible(false);gl.setVisible(true);bl.setVisible(false);}
       System.out.println(zaehler);
     }
   }
   
   
   
}
Hi ich möchte in meinem Testprogramm eine private innere Klasse realisieren, sodass die Klasse auf meine Variablen zugreifen kann.
Mit einer anonymen inneren Klasse funktioniert alles aber wenn ich es mit einer privaten inneren Klasse mache kann es nicht realisiert werden.

Wo muss ich die private innere Klasse einfügen. In dem Mainblock sowie Klassenblock funktioniert es nicht.

Bitte um Hilfe!
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Eine innere Klasse wie du sie definiert hast, benötigt eine Instanz der äußeren Klasse.
Was du willst, ist eine statische innere Klasse. Also einfach "private static class ButtonListener ..."
 

InfectedBytes

Top Contributor
MainFrame.this wird benutzt um von der inneren Klasse auf die umschließende zuzugreifen.
Aber das Problem ist, dass er aus einer statischen Methode heraus, eine Instanz der inneren Klasse erzeugen will.

Was man auch machen könnte: ButtonListener listener = xyz.new ButtonListener();
wobei xyz eben deine MainFrame Instanz ist, welche als Parent der inneren Klasse genutzt werden soll.
Da du aber von deinem Listener auf keine speziellen Member von MainFrame zugreifst, reicht es einfach den Weg vom meinem letzten Post zu gehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J private statische List - Datenbankverbindung AWT, Swing, JavaFX & SWT 2
M private Variable übergeben AWT, Swing, JavaFX & SWT 12
N Rückgabewerte bei private void jButton1ActionPerformed AWT, Swing, JavaFX & SWT 4
C private Panel anderer Klasse verändern AWT, Swing, JavaFX & SWT 11
U AWT local variable * is accessed from within inner class; needs to be declared final AWT, Swing, JavaFX & SWT 6
G JPanel Inner-Padding AWT, Swing, JavaFX & SWT 8
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
T Szene wechselen JavaFX mit If in Main Class AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
L JavaFX Control Pseudo Class AWT, Swing, JavaFX & SWT 1
J Swing The serializable class FMFrame does not declare a static final serialVersionUID field of type long AWT, Swing, JavaFX & SWT 5
K JavaFX Unresolved class button bar AWT, Swing, JavaFX & SWT 8
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
A JavaFX Controller Class saveFile AWT, Swing, JavaFX & SWT 2
C JavaFX Controller class AWT, Swing, JavaFX & SWT 2
T FileFilter: class File wird nicht gefunden AWT, Swing, JavaFX & SWT 2
H Could not find main class: ... AWT, Swing, JavaFX & SWT 10
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
M SomeClass.class.getResourceAsStream(String filename) funktioniert nicht in jar) AWT, Swing, JavaFX & SWT 32
A Applet main class aus anderer main class aufrufen AWT, Swing, JavaFX & SWT 15
A Zeichnen auf JFrame aus anderer class heraus AWT, Swing, JavaFX & SWT 12
D LayoutManager Main layout auf andere Class Dateien verweisen? AWT, Swing, JavaFX & SWT 17
K Cannot find symbol: class JCanvas AWT, Swing, JavaFX & SWT 8
J Calling a method from another class AWT, Swing, JavaFX & SWT 2
T Compiler erzeugt mehrere .class Dateien AWT, Swing, JavaFX & SWT 2
G JButton aus JPanel Class nicht erreichbar AWT, Swing, JavaFX & SWT 7
R Methode der Class im JComboBox abfragen AWT, Swing, JavaFX & SWT 2
J serializable class GUI does not declare a static final s. AWT, Swing, JavaFX & SWT 2
S Class in einer anderen Class ausführen? AWT, Swing, JavaFX & SWT 5
P ImageIconDemo.class AWT, Swing, JavaFX & SWT 2
D Eclipse RCP & Hibernate: <Class> not mapped AWT, Swing, JavaFX & SWT 4
5 JFileChooser und JPanel in Java Class einbauen. AWT, Swing, JavaFX & SWT 3
R DataVector bei TableModel - Class Cast Exception AWT, Swing, JavaFX & SWT 9
M GridbagLayout&Class will Member nicht kennen =( AWT, Swing, JavaFX & SWT 2
H JFileChooser und Class Instanz AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben