Programm will nicht erben

Status
Nicht offen für weitere Antworten.

DR

Bekanntes Mitglied
Hallo,

Also ich erstelle ein Menu welches gepackt wird. Jetzt will ich die Methoden von den anderen Menuclassen verwenden. Das Autovervolständigen geht ohne Probleme, aber wenn ich dann den Code Kompilieren will, kommt nur die Fehlermeldung:

No accessible field named "ErstelleMenu" was found in type "Menu.ErstelleMenuBar".

Hier auch mal den Menu Code, als erstes die Erzeugung vom JMenuBar:

Code:
package Menu;

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

public class ErstelleMenuBar{
  public static void erstelleMenuBar( JFrame frame ){
    JMenuBar mbar = new JMenuBar();
    ErstelleMenu.erstelleMenu( mbar );
    
    frame.add( mbar );
  }
}

Und dann hier den Code, wo das JMenu erzeugt wird:

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

public class ErstelleMenu{
  public static void erstelleMenu( JMenuBar mbar ){
    JMenu m1 = new JMenu( "Datei" );
    JMenu m2 = new JMenu( "Hilfe" );
    JMenu m3 = new JMenu( "Impressum" );
    
    mbar.add( m1 ); mbar.add( m2 ); mbar.add( m3 );
  }
}

Hat vielleicht jemand eine Erklärung dafür? Das wäre echt nett 😉

MfG DR
 
Ordner Frame (mit Startklasse)
-> Ordner: Fenster (alle Methoden zum erzeugen des Fensters)
-> Ordner: Menu (mit "ErstelleMenuBar und ErstelleMenu
-> Ordner: Bilder (Ordner mit Bilder)
 
1. Package-Namen solltest du klein schreiben, dann kapiert man auch, dass es welche sind ... 😉
2. Im zweiten Code-Schnippel müsste ein Import für rein:
Code:
import Menu.ErstelleMenu;
 
SebiB90 hat gesagt.:
was ist eigentlich Menu.ErstelleMenuBar? wo ist die Klasse Menu bzw die variable?

Die Klasse ErstelleMenuBar im package Menu.

Guckst du hier die erste Zeile von DR's Code:
Code:
package Menu;
Genau um diese Verwirrung nicht aufkommen zu lassen, sollte man jeden package-Teilnamen
mit einem Kleinbuchstaben beginnen lassen.

@DR
Wieso versuchst du aus einem package heraus auf das Default-package (dasjenige,
dessen Java-Dateien keine package-Deklaratioin besitzen) zuzugreifen.

Bring die Klasse ErstelleMenu entweder auch im package "Menu" unter
oder verzichte (vorerst) gleich auf packages.

Außerdem finde ich es einen merkwürdige Vorgehensweise, für jede
Operation eine eigene Klasse zu definieren die hierfür eine static-Methode
bereitstellt.

Klassen werden definiert um Instanzen (Objekte) von ihnen zu erstellen.
Sie sind, bis auf Ausnahmen, keine Methodenlieferanten.

Geh am besten ein paar Beispiele in Tutorials durch, um ein Gefühl
für die übliche Strukturierung eines GUI-Programms zu bekommen.
 
außerdem hat das nichts mit Vererbung zu tun ?!

als Hilfe für weiteres Programmieren:

keine Tätigkeiten als Klassennamen (z.b. ErstelleMenu ist eine Methode, keine Klasse). #
static nutzung so gering wie möglich einsetzen

usw
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben