LazyWolf: Neue class, altes Frame

Hallo.

Ich versuche gerade eine neue class zu starten, die aber dennoch Befehle enthält, die in ein bereits geöffnetes Frame zeichnen etc.

Das sollte nur dazu dienen, einen neuen Programmabschnitt zu starten, und nicht immer weite die Hauptklasse zuzumüllen.

Aber ich kriege das irgendwie nicht hin.

Erstmal:
Wie rufe ich die korren auf?
Die einzige Möglichkeit, die keine Fehler verursacht, scheint mir

new CLASSNAME;

Ist das richtig so?

Dann mein zweites Problem. Ich habe extends JFrame unter die Klasse gesetzt, damit ich mich vernünftig auf die dazugehörigen Elemente beziehen kann. Die Klasse fühlt sich jedoch keinerlei für das Fenster, das von der ersten Klasse geöffnet wurde, verantwortlich.

Wenn ich extends BGame (meine Hauptklasse) mache, dann öffnet sich ein neues Fenster, statt das alte zu verwenden.

Ich hoffe, nun endgültig durch meine Beschreibung alle Klarheiten beseitigt zu haben! :-)

Farewell!

  1. Hi!

    Erstmal:
    Wie rufe ich die korren auf?
    Die einzige Möglichkeit, die keine Fehler verursacht, scheint mir

    new CLASSNAME;

    Ist das richtig so?

    Besorge dir doch bitte mal ein Buch für Java-Einsteiger! Oder lade dir eines kostenlos aus dem Internet herunter.

    Grüsse
    Iwemti

    1. Besorge dir doch bitte mal ein Buch für Java-Einsteiger! Oder lade dir eines kostenlos aus dem Internet herunter.

      Danke für den Tipp, aber hätte ich das nicht, wäre ich nichtenmal an der Stelle...
      Mein Problem hat sich mitlerweile etwas konkretisiet:

      Um die Sqing Elemente vernünftig nutzen zu können muss ich es von JFrame ableiten.

      Die Klasse fühlt sich aber keineswegs für das schon geöffnete Fenster zuständig, und da soll sie aber doch reinzeichnen.
      Leite ich es von der Haupklasse ab, öffnet sich ein neues Fenster. Das ist aber auch nicht Sinnd er Sache...

      1. Hallo LazyWolf,

        Um die Sqing Elemente vernünftig nutzen zu können muss ich es von JFrame ableiten.

        Die Klasse fühlt sich aber keineswegs für das schon geöffnete Fenster zuständig, und da soll sie aber doch reinzeichnen.
        Leite ich es von der Haupklasse ab, öffnet sich ein neues Fenster. Das ist aber auch nicht Sinnd er Sache...

        Befasse dich doch nochmal gründlich mit OOP, dem Unterschied zw. Klassen und Instanzen,
        der Korrelation zwischen verschiedenen Instanzen, Vererbung, Überlagerung
        und Swing (wenn du das nutzen willst).

        Ich kann Dir übrigens http://www.javabuch.de wärmstens empfehlen.

        Gruß,
        dimde

        1. Befasse dich doch nochmal gründlich mit OOP, dem Unterschied zw. Klassen und Instanzen,
          der Korrelation zwischen verschiedenen Instanzen, Vererbung, Überlagerung
          und Swing (wenn du das nutzen willst).

          Ich habe alle Kapitel zu OOP durchgelesen, bevor ich hier gepostet habe... Wenn ihr jedoch alle meint, es steht da wirklich für jeden verständlich drin, werde ich es nochmal tun, wer weiß, was ich da für Denkaussetzer hatte.

          CYa

          1. Ich habe mir das jetzt nocheinmal alles reingezogen, aber ich finde nach wie vor keine Antwort auf mein Problem. Sind Klassen nur dazu gut, irgendwelche Sachen zu speichern? Kann ich mir nicht Vorstellen...
            Die Ableitung

            Straßenfahrzeug
            -> Zweirad
            ---> Motorrad
            ---> Fahhrad
            -> Auto
            ---> Cabrio
            ---> Zweisitzer

            War mir vorher auch schon klar, aber es gibt nicht ein Beispiel, was auf meine Fragestellung eingeht, tut mir leid...

            Also bitte, sagt mir, dass ich da was falsche verstehe, oder dass es nur für sowas gut ist, oder irgendwas anderes produktives, aber das nocheinmal zu lesen wird wohl nichts bringen...

            1. Hi Lazywolf,

              ich hab jetzt nochmal versucht Dein Problem zu verstehen, und Irgendwie...vielleicth hab ich ein bisschen was verstanden. Also das new Classenname ist NUR! zur Instanzierung der Klasse, das bedeutet, wenn eine Klasse (der Code) ein Bauplan für ein Auto ist, baust Du mit "new Auto" Dir ein Instanz der Klasse Auto also ein Auto halt.
              In den Constructor, der dabei nämlich aufgerufen wird, packst Du nur Initialisierungscode rein, wenn Du da was brauchst.
              Anderen Code packst Du in Methoden z.B. hat AUto dan neben dem Konstruktor eine function (Methode) losfahren(), wenn Du also in Deiner Hauptklasse irgendwann "MyAuto = new Auto();" aufgerufen hast, kannst Du dann MyAuto.losfahren() aufrufen, und der Code in der Methode losfahren() wird ausgeführt. Klar ?
              Klassen sind dazu gut Sachen zu Speichern z.B. Variablen der Art:

              class Auto{
                 Farbe = blau;
                 Höchstgeschwindigkeit = 160;
                 aktuelle_Geschwindigkeit = 55;
                 .
                 .
                 .

              Und dann haben Klassen noch Mehtoden Die auf diesen Variablen arbeiten z.B.

              function losfahren( int speed ){
                if( speed < Höchstgeschwindigkeit ){
                aktuelle_Geschwindigkeit = speed;
                }
              }

              }// Ende class auto

              Zu Deinem Problem: Wenn Du mit dem Frame interagieren willst von einer anderen Klasse aus, muss dise Kalsse eine Referenz auf diesen Frame haben, d.h. Du musst eine Variable in Der Klasse haben, die auf den Frame verweist.
              Das kannst Du so machen, dass die Klasse (z.B. MyClass) ein Attribut (eine Variable) vom Typ JFrame hat, die Zuweisung machst Du im Konstruktor:

              class MyClass(){

              JFrame parentframe;

              MyClass( JFrame pframe  ){
                   parentframe = pframe;
                 }
              }

              Wenn die Hauptklasse z.B. die JFrame Klasse selbst ist, hast Du dort irgnedeine Variable vom Typ MyClass:

              MyClass Child;

              Die Wertzuweisung (die mit der Instnazierung des Object verbunden ist geht dann so:

              Child = new MyClass( this );

              Wobei "this" eine Referenz der Hauptklasse (also vom Typ JFrame) auf sich selbst ist. In MyClass kannst du dann auf die Hauptklasse zugreifen einfach mit pframe.irgendeineMethodeVonJFrame

              Hilft Dir das weiter ? Wenn nein formulier Dein Problem anders, oder besorg Dir vielleicht ein bessseres Javabuch :-)

              Gruss

              Marko

      2. Hi LazyWolf,

        ich habe das Gefühl, dass Dir nicht ganz klar ist was ableiten, Vererbung bedeutet. Eine abgeleitete Klasse hat die Funktionen und Methoden der Parentklasse z.B. eine Klasse Lokomotive hat die Eigenschaft (=Variable) Höchstgeschwindigkeit, Methode (=Funktion) losfahren,... eine abgeleitete Klasse ist dann eine Spezialisierung z.B. Dampflok, die hat dann noch ne Methode dampfen, aber auch alle Methoden und Eigenschaften von Lok.
        Verschtehst ? Mit Beziehungen zur Laufzeit, wer was Aufrufen kann,etc...Hat das Verdammt wenig zu tun.

        Gruss

        Marko