Swing No enclosing instance of the type mainform is accessible in scope

Status
Nicht offen für weitere Antworten.

homy

Mitglied
Hallo Leute,

also ich hab folgendes Problem:

Ich habe eine JTable und hab mit einer extra Klasse den TableCellEditor überschrieben. Wenn jemand bei der Datenbank ein Object doppelklickt, soll er ein neues Tab erstellen.

Hier der Code von der ListEditor.java

Java:
 public class ListEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
   	private final long serialVersionUID = 1L;

        JButton button;
        Icon currentIcon;
        int Row;
        int Column;
        JTable Table;
        JDialog dialog = new JDialog();
             
        public Object getCellEditorValue() {
               	return currentIcon;
      }

         public Component getTableCellEditorComponent(JTable table,
                                                     Object value,
                                                     boolean isSelected,
                                                     int row,
                                                     int column) {
        
        	currentIcon = (Icon)value;
        	button = new JButton();
        	button.addActionListener(this);
        	button.setIcon((Icon)value);
        	Row = row;
        	Column = column;
        	Table = table;
            return button;
        }

        public void actionPerformed(ActionEvent e) {
        	if (Column == 1) {
			System.out.print("Du möchtest zum Tab folgendes Hinzufügen:" + Table.getValueAt(Row, 0)+"\n");

			mainform.this.Tabmanager.addTab("HT", new JButton()); //JButton nur zum Testen, da kommt dann das eig. Tab hin)			
	
        	}

       
}

mainform ist meine Hauptklasse wo alles drin läuft. Bei dem Aufruf mit mainform.this.Tabmanager kommt der Fehler im Titel. Was gibts für Lösungsansätze.

Ich hab schonmal versucht der main(String[] args) Befehle zuübergeben...funktioniert ganz gut...aber wenn ich dann in der Main den Befehl: Tabmanger.addTab("HT", new JButton()); eingebe kommt der Fehler, mit dem non-static und wenn ich den Tabmanager zur Static umwandel kommt bei der Runtime der Fehler java.lang.NullPointerException Fehler....aber ich denke das is auch net die Lösung

Was mach ich nun?!
Vielen Dank im Voraus

de Homy :rtfm:
 

KrokoDiehl

Top Contributor
Na, er kennt dein
Code:
mainform
nicht. So eine Konstruktion kannst du nur benutzen, wenn du innere Klassen schreibst, also etwas wie
Java:
public class Aussen
{
    class Innen
    {
        public Innen()
        {
            Aussen.this.machWas();
        }
    }

    public void machWas()
    {}
}

So musst du deinem ListEditor die Referenz von
Code:
mainform
anderweiter übergeben.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben