Layout Manager

steffenxyz

Grünschnabel
Hey,
also ich hab folgendes Problem:
Mein Programm hat mittlerweile 600 Zeilen, die bisher alle in einer Klasse und einer Datei vorlagen (ja ich weiß, spart euch die Kommentare dazu).
Jetzt möchte ich das Programm auf mehrere Dateien verteilen.
Das Problem:
Das Programm ist mit einer GUI, und der LayoutManager ist auf null, da ich die Position der Buttons,Labels un Co. manuell wählen möchte!
Das eigentliche Problem besteht darin, dass ich beim Strukturieren der SubKlassen die Einzelnen Buttons und Labels nicht hinzufügen kann,
Also, kurz: Ich kann nur in der Hauptklasse das Layout machen und Buttons etc positionieren, ist das richtig?
Oder gibt es eine Möglichkeit dass in den Subclassen zu machen? (Würde den Quellcode erheblich übersichtlicher und lokaler gestalten!)

MfG Steffenxyz
 
Kannst du bitte etwas genauer drauf eingehen? Warum z. B. kannst du die Buttons nicht hinzufügen? Normalerweiße ist es egal, in welcher Klasse du was machst.
 
Moin,

das denke ich auch.
Entweder rufst Du dann eine Instanz Deiner Subclass auf oder übergibst eine Referenz, mit der Du dann die (public !) Elemente ansprichst ...

Gruß
Klaus
 
also ich probier des ganze ständig an einem kleinen app, damit die fehlerquote sinkt,
dennoch t es einfach ned, die buttons sind auch public, bzw. dass war auch mein erster gedanke, aber ich komm echt ned weiter....:(

Code:
//Datei 1!
import java.io.*;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class Klasse1 extends Applet implements ActionListener{

       public void init(){
              this.setLayout(null);
              this.setSize(1280,1024);
              Klasse2 test=new Klasse2();
              test.testit();
       }

       
       public void actionPerformed(ActionEvent erreignis){
       }

}


Code:
//Datei 2!
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class Klasse2 extends Klasse1{

      public Button testBtn=new Button("KLICKMICH");
        
       public void Klasse2(){
       }
       
       public void testit(){

        testBtn.setBounds(100,100,100,30);
         testBtn.addActionListener(this);
         add(testBtn);

       }
       


}

Der Ausgabeschirm ist LEER
Was mach ich falsch?
Ich hab echt keine Ahnung

MfG Steffenxyz
 
Moin,

wo sollen die Button denn hinzugefügt werden :confused:
Ein "add" alleine reicht da nicht ... Deine Anwendung benötigt schon einen Frame oder ein Panel etc., dem Du sie hinzufügen kannst .... :p

Gruß
Klaus
 
ähm, bisher hab ich des nicht gebraucht,
also wenn ich den button in klasse1 genauso übernehme wird er mir angezeigt....
 
Sorry, sah gerade erst, dass Du von Applet ableitest, da mag das anders sein, kenne mich nicht besonders damit aus ;)

Aber vlt. hilft Dir die Idee, eine Referenz von Klasse1 an Klasse2 zu übergeben - etwa so (VHIDT(!)) :
Java:
public class Klasse1 
    extends Applet 
    implements ActionListener
{
     public void init()
    {
              this.setLayout(null);
              this.setSize(1280,1024);
              Klasse2 test=new Klasse2();
              test.testit( this ); // hier die Übergabe
        }
       
        public void actionPerformed(ActionEvent erreignis)
    {}

}

public class Klasse2 
    extends Klasse1
{
          public Button testBtn=new Button("KLICKMICH");
        
        public void Klasse2()
    {}
       
           public void testit( Klasse1 parent )  // und hier !!
    {
            testBtn.setBounds(100,100,100,30);
            testBtn.addActionListener(this);
            parent.add(testBtn);  // hier der geänderte Aufruf
    }
}

Gruß
Klaus
 
danke funktioniert fast perfekt

einzigster Fehler:
Code:
 public void testit( Klasse1 parent )
    {
            testBtn.setBounds(100,100,100,30);
            testBtn.addActionListener(parent); // <--- Statt "this" muss hier "parent" stehen!
            parent.add(testBtn);  
    }

Vielen Dank,
endlich kann ich weiter programmieren:)

MfG Steffenxzy
 
Zuletzt bearbeitet:
Zurück