GUI aus anderer Klasse beziehen

Nachtschatten

Aktives Mitglied
Hallo,
Gibt es eine Möglichkeit das man eine andere Klasse samt GUI in eine andere einbinden kann.
Es soll nach Möglichkeit in einem Border Layout im Center ja nach Programphase Klassen mit verschiedene GUI dargestellt werden.
 

KingOfExceptions

Bekanntes Mitglied
Ich verstehe jetzt nicht so ganz, was du meinst.... Sowas?

Java:
class BesonderesPanel extends JPanel
{
//...
}

class Klasse1
{
      public static void main(String[] args)
      {
            JFrame frame=new JFrame();
            frame.add(new BesonderesPanel(), BorderLayout.CENTER);
      }
}
 

Nachtschatten

Aktives Mitglied
Ich habe in der (ich nenne sie mal) Main Klasse ein Border Layout in dem ich in den 4 Himmelsrichtungen noch Panels mit GUI habe (z.B. JMenue im Norden).
In anderen Klassen habe ich ebenfalls GUIs die ich z.B. je nach dem was im JMenue passiert gerne ins Center des Main Panels einbinden möchte.

So in etwa hatte ich mir das auch schon gedacht aber es hat nicht geklappt. Muss ich die Klassen die ich einbinden möchte speziell konfigurieren ?
 

KingOfExceptions

Bekanntes Mitglied
Poste mal die Klassen.
Das funktioniert bei mir auch nur, weil ich mit
Code:
extends JPanel
angebe, was denn diese Klasse überhaupt ist. Das ginge natürlich auch bei
Code:
extends JComponent
(wovon JPanel ja eine 'Tochterklasse' ist), aber nicht bei
Code:
extends Flugzeug
oder sowas.
 

Nachtschatten

Aktives Mitglied
Mit
Java:
private	Name_der_GUI_Klasse 	gui;
und die GUI Klasse
Java:
public class Name_der_GUI_Klasse extends JFrame
konnte ich die komplette GUI einbinden. Dies allerdings für die ganze GUI.
Jetzt möchte ich sie aber in die GUI der Main integrieren.

Die GUI Klassen habe ich alle auf Panels und die auf ein JFrame.
 

njans

Top Contributor
Gibt es eine Möglichkeit das man eine andere Klasse samt GUI in eine andere einbinden kann.
Das "samt GUI" kommt mir komisch vor. Natürlich kannst du Klassen in Klassen (anonym, inner) legen. Auch kannst du Klassen in anderen Klassen verwenden, sonst würde das ganze SDK zusammenbrechen. Wenn du eine grafische Komponente willst, die du mittels eines Layouts einbinden kannst, dann erbst du einfach nur von JComponent (sofern du Swing verwendest, was anzuraten ist) oder einer passenden Kindklasse (z.B. JPanel). Dann änderst du eben genau das, was du möchtest und fertig ist deine Komponente.
 

njans

Top Contributor
Willkommen im Club, mir wird auch nicht recht klar, was mit diesem " komplette GUI einbinden" und "GUI der Main integrieren" gemeint ist.
 

Nachtschatten

Aktives Mitglied
Dann änderst du eben genau das, was du möchtest und fertig ist deine Komponente.
Wie meinst du das ? Alles in der anderen Klasse auf JPanel, JButton, JLabel,…. Und dergleichen beschränken ?

Posten könnte ich aber das sind ja 8 Klassen mit je etwa 200 Codezeilen.
Welche Teile wären denn wichtig ?

In der einen Klasse habe ich die Steuerung für das Programm. In den anderen Klassen habe ich verschiedene Elemente wie ein Kalender oder ein Datenbanken Programm. Einige der Klassen sind noch von früher da und ich würde sie gerne „recyceln“.
Die Klassen sind alle unterschiedlich, den Relevanten Teil poste ich gerne. Nur der ganze Ballast wie z.B. Feiertagsberechnung für den Kalender spammt zum einen nur alles zu und zum anderen liest so viel Code ja keiner.
 

Nachtschatten

Aktives Mitglied
Ich habe das mit dem extends JPanel mal probiert und schnell 2 mini Klassen gemacht.
Java:
package TestPanel;

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

public class StartTest extends JPanel
{
	JFrame f_Frame = new JFrame ();

	public static void main (String [] args)
	{
		new StartTest ();
	}	// Main

	public StartTest()
	{
		f_Frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		f_Frame.setLayout (new BorderLayout ());

		f_Frame.add(new PanelTest(), BorderLayout.CENTER);
		
		f_Frame.setVisible (true);
	}	// Constructor
}	// Class

und

Java:
package TestPanel;

import javax.swing.*;

public class PanelTest
{
	JPanel p_Ppanel = new JPanel ();
	JButton btn_Button = new JButton ("Test");
	
	public PanelTest()
	{
		p_Ppanel.add (btn_Button);
	}	// Constructor
}	// Class

Das add unterstreicht er mir rot und meinte das wäre nicht anwendbar.
 

KingOfExceptions

Bekanntes Mitglied
kaetzacoatl hat Recht. Du müsstest das so umändern:

Java:
package TestPanel;
 
import javax.swing.*;
 
public class PanelTest extends JPanel
{
    JButton btn_Button = new JButton ("Test");
    
    public PanelTest()
    {
        this.add (btn_Button); 
    }   // Constructor
}   // Class

Und bei deiner Klasse, wo du das JFrame erzeugst, kannst du dir das
Code:
extends JPanel
aufsparen.
 

Nachtschatten

Aktives Mitglied
Ok, THX ! ! !
Ich denke jetzt habe ich es. Die einzubindende GUI Klasse erbt JPanel.
Und das Panel auf das ich in der GUI Klasse alles setzte wird this gesetzt.

Java:
		this.add (p_Ppanel);		
		p_Ppanel.add (btn_Button);

Oder habe ich da noch einen Fehler drin ?
 

KingOfExceptions

Bekanntes Mitglied
Ich verstehe nicht ganz, was du sagst, aber es ist so:

Die einzubindende Klasse muss JPanel(oder JComponent oder so) erben und anstatt in der einzubindenden Klasse eine neue Instanz von JPanel zu machen, ersetzt du das durch
Code:
this
.

Wenn ich's richtig verstehe, dann machst du genau das Gegenteil, oder?

So muss es sein:

Java:
package TestPanel;
 
import javax.swing.*;
 
public class PanelTest extends JPanel
{
    JButton btn_Button = new JButton ("Test");
    
    public PanelTest()
    {
        this.add (btn_Button); 
    }   // Constructor
}   // Class

und

Java:
package TestPanel;
 
import java.awt.*;
import javax.swing.*;
 
public class StartTest
{
    JFrame f_Frame = new JFrame ();
 
    public static void main (String [] args)
    {
        new StartTest ();
    }   // Main
 
    public StartTest()
    {
        f_Frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        f_Frame.setLayout (new BorderLayout ());
 
        f_Frame.add(new PanelTest(), BorderLayout.CENTER);
        
        f_Frame.setVisible (true);
    }   // Constructor
}   // Class
 

Nachtschatten

Aktives Mitglied
Ich habe die beiden jetzt so

Java:
package TestPanel;

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

public class StartTest 
{
	JFrame f_Frame = new JFrame ();
	JLabel label = new JLabel ("North");

	public static void main (String [] args)
	{
		new StartTest ();
	}	// Main

	public StartTest()
	{
		f_Frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		f_Frame.setLayout (new BorderLayout ());
		f_Frame.setSize (100, 100);

		f_Frame.add (label, BorderLayout.NORTH);
		f_Frame.add(new PanelTest(), BorderLayout.CENTER);
		
		f_Frame.setVisible (true);
	}	// Constructor
}	// Class


Java:
package TestPanel;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class PanelTest extends JPanel implements ActionListener
{
	JPanel p_Ppanel = new JPanel ();
	JButton btn_Button = new JButton ("Test");
	public int i;

	public PanelTest()
	{
		//		this.add (btn_Button);
		this.add (p_Ppanel);
		p_Ppanel.add (btn_Button);
		btn_Button.addActionListener (this);

	} // Constructor
	@ Override
	public void actionPerformed (ActionEvent e)
	{
		i = i+1;
		btn_Button.setText ("" + i);
	}	// Action Event
} // Class
 

KingOfExceptions

Bekanntes Mitglied
Fast. Hier die Korrektur der zweiten Klasse. Die erste ist ok.

Java:
package TestPanel;
 
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.*;
 
public class PanelTest extends JPanel
{
    JButton btn_Button = new JButton ("Test");
    public int i;
 
    public PanelTest()
    {
        //      this.add (btn_Button);
        this.add (btn_Button);
        btn_Button.addActionListener (new ActionListener()
        {
               public void actionPerformed(ActionEvent e)
               {
                           i++;
                           btn_Button.setText ("" + i);
               }
        });
 
    } // Constructor
   
} // Class
 
Zuletzt bearbeitet:

Nachtschatten

Aktives Mitglied
Jetzt bin ich doch wieder verwirrt. Warum hast du das Panel rausgenommen ? Ich dachte ich muss alles auf ein Panel adden und adde das dann in der GUI der anderen Klasse.
 

KingOfExceptions

Bekanntes Mitglied
Wenn du das machst : JPanel panel=new JPanel(); wird ein neues JPanel erzeugt. Das ist klar.
Wenn du nun das machst: MeinPanel panel=new MeinPanel() und in MeinPanel extends JPanel steht, dann hat MeinPanel alles das, was JPanel auch hat. Und noch mehr, wenn du eine neue Methode in MeinPanel erstellst. Somit machst du ein JPanel, das jedoch an deine Anforderungen angepasst ist.
Wenn du ein MeinPanel ein neues JPanel deklarierst, dann hast du schon zwei. Naemlich MeinPanel(ein JPanel, das du aber veraendern kannst) und das in MeinPanel deklarierte, total normale JPanel. Aber du willst ja nicht 2 JPanel (ein besonderes und ein normales) sondern nur 1 besonderes. Und damit MainPanel besonders ist, muss man MAINPANEL etwas hinzufuegen und nicht einer neuen Instanz von JPanel.
Das war jetzt der Kernpunkt von OOP in 5 Saetzen. Ich hoffe du verstehst es, ansonsten musst du dir mal was in der Java-Insel durchlesen(bei google 'java ist auch eine insel' eingeben. Dort findest du das online buch)
 

Nachtschatten

Aktives Mitglied
Das neue Super Panel ist eine Sache. Das verstehe ich soweit auch. Aber was mache ich wenn ich auf das Super Panel mehrere Panels adden möchte. Ich habe z.B. Bei dem Kalender ein Panel für Vormittags und Nachmittags. Beide jeweils mit Uhrzeit und Terminen. Beide habe ich getrennt damit ich sie beide je nach belieben verändern kann. Wie z.B. längere Mittagspause.
 

Nachtschatten

Aktives Mitglied
Ich habe es so probiert
Java:
		this.add (p_Main);
		p_Main.setLayout (new BorderLayout ());

		p_Main.add (p_Steuerung, BorderLayout.NORTH);
		p_Main.add (p_Center, BorderLayout.CENTER);
Allerdings schiebt er mir das ganze zusammen. Ich habe so nur einen kleinen Streifen von etwa 20% der Fensterbreite wo das Panel angezeigt wird. Desweiteren lässt er mir auch unten einiges an Platz.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
M Klassen Klasse aus anderer Klasse "aufrufen" Java Basics - Anfänger-Themen 2
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
I Eigenschaften von Position aus anderer Klasse übernehmen Java Basics - Anfänger-Themen 17
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
T OOP GUI aus anderer Klasse updaten Java Basics - Anfänger-Themen 6
A JButton in anderer Klasse bearbeiten. Java Basics - Anfänger-Themen 2
deatzi Wert aus anderer Klasse lesen Java Basics - Anfänger-Themen 7
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
F Interface JButton von anderer Klasse hinzufügen Java Basics - Anfänger-Themen 2
L Klassen Methode aus anderer Klasse Java Basics - Anfänger-Themen 13
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
J Button in anderer Klasse ändern Java Basics - Anfänger-Themen 3
E Referenzvariable in anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
E Klassen Referenzvariable in anderer Klasse aufrufen. Java Basics - Anfänger-Themen 1
M Neu instanzierte Klasse übernimmt Werte von anderer Instanz Java Basics - Anfänger-Themen 4
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Java Basics - Anfänger-Themen 0
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
1 Arraylist in anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
S Klassen Instanz anderer Klasse raus geben Java Basics - Anfänger-Themen 1
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
B Klassen Auf Instanz anderer Klasse zugreifen Java Basics - Anfänger-Themen 1
D Methoden g.setColor funktioniert nicht bei Methodenaufruf in anderer Klasse Java Basics - Anfänger-Themen 1
B Liste in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
X Gwt DnD, Drag auf Droparea in anderer Klasse? Java Basics - Anfänger-Themen 0
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
T Vererbung Variable aus anderer Klasse verwenden Java Basics - Anfänger-Themen 8
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
Jackii Globale Variable aus anderer Klasse ändern... Java Basics - Anfänger-Themen 4
L Erste Schritte Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 16
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
T Variable aus anderer Klasse Java Basics - Anfänger-Themen 3
G ArrayList in anderer Klasse verwenden Java Basics - Anfänger-Themen 31
C Timer aus anderer Klasse stoppen/starten Java Basics - Anfänger-Themen 3
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
G Objekt wie Objekt anderer Klasse behandeln Java Basics - Anfänger-Themen 4
K Vererbung Variable aus anderer Klasse nutzen Java Basics - Anfänger-Themen 3
P Klassen JTextfield aus anderer Klasse herausfüllen Java Basics - Anfänger-Themen 12
G Klassen Richtig auf jTextArea aus anderer Klasse zugreifen? Java Basics - Anfänger-Themen 3
A Klassen Klasse in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
J Button in extra Klasse festlegen und in anderer Klasse einfügen? Java Basics - Anfänger-Themen 3
J GUI Button Klasse in anderer Klasse einfügen Java Basics - Anfänger-Themen 3
G Methodenaufruf anderer Klasse Java Basics - Anfänger-Themen 18
J Threads Variablen Wert aus anderer Klasse auslesen Java Basics - Anfänger-Themen 4
A Array aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 9
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
F Erste Schritte String von anderer Klasse auf TextArea von erster Klasse Java Basics - Anfänger-Themen 12
C Problem mit Zugriff auf Variable bzw. get-Methode in anderer Klasse Java Basics - Anfänger-Themen 2
A String aus anderer Klasse in JTextArea einfügen Java Basics - Anfänger-Themen 7
A Methode aus anderer Klasse Java Basics - Anfänger-Themen 5
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
A Bild erstellen in anderer Klasse Java Basics - Anfänger-Themen 2
X OOP Methoden und Variablen in anderer Klasse verwenden Java Basics - Anfänger-Themen 5
I Konstruktor in anderer Klasse nutzen Java Basics - Anfänger-Themen 11
U Factory in anderer Klasse Java Basics - Anfänger-Themen 2
I Collections Arraylist in anderer Klasse aufrufen Java Basics - Anfänger-Themen 6
H Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 7
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
c_sidi90 Zugriff auf Swingkomponente aus anderer Klasse Java Basics - Anfänger-Themen 12
S Event aus anderer Klasse als Auslöser Java Basics - Anfänger-Themen 5
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
L Methodenaufruf aus anderer Klasse Java Basics - Anfänger-Themen 5
I Von einer Methode eines Objektes auf Attribut eines Objektes anderer Klasse zugreifen Java Basics - Anfänger-Themen 4
S Main-Methode aus anderer Klasse heraus starten Java Basics - Anfänger-Themen 8
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
S Zugriff auf Methode anderer Klasse Java Basics - Anfänger-Themen 6
F Tabelle in anderer Klasse füllen Java Basics - Anfänger-Themen 9
B Wert einer String Variable an andere String Variable in anderer Klasse uebergeben Java Basics - Anfänger-Themen 5
T Datentypen boolean von anderer klasse in hauptklasse übertragen Java Basics - Anfänger-Themen 2
A drawImage auf JFrame in anderer Klasse Java Basics - Anfänger-Themen 4
J Auf ActionEvents in "anderer" Klasse reagieren Java Basics - Anfänger-Themen 2
U Anderer Klasse ein Obejkt einer Klasse übergeben Java Basics - Anfänger-Themen 5
M LinkedList in anderer Klasse nutzen Java Basics - Anfänger-Themen 4
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
R Textlabel aus anderer Klasse ansprechen - Konstruktor notwendig? Java Basics - Anfänger-Themen 7
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
K CheckBox aus anderer Klasse Java Basics - Anfänger-Themen 3
G Variable welche in anderer Klasse liegt, verändern. Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben