JInternalFrame aus anderer Klasse richtig implementieren?

Status
Nicht offen für weitere Antworten.

spidermobile

Bekanntes Mitglied
Hallo Javagemeinde,

ich habe leider noch so meine Probleme, ein JInternalFrame richtig zu implementieren. Anbei mein Ansatz. Leider erscheit das JInternalFrame nach dem Aufruf erst nach dem ich auf den JFrame klicke. Ferner werden die .setSize() Angaben nicht übernommen.

Vermutlich liegt es daran, dass ich auf "frame" und nicht auf das "desktop" referenziere. Wie bringe ich dem JInternalFrame bei, dass es nicht direkt auf frame, sondern auf desktop platziert wird?
Geht das so überhaupt?

MainFrame:

Code:
public class MainFrame extends JFrame {

	private static final long serialVersionUID = 3258131345233623349L;

	private MainMenu mainMenu;
	private JDesktopPane desktop;
	private Color bgcolor = new Color(250,250,100); 
	
	public MainFrame(){

		setTitle( "Tutorial" );

		setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );

		// Create and add JDesktopPane
		desktop = new JDesktopPane();
		getContentPane().add(desktop);
		desktop.setBackground( bgcolor );  
		
		mainMenu = new MainMenu( this );
		setJMenuBar( mainMenu );
		
		setSize( 900, 600 );
		setLocationRelativeTo( null );
		
		addWindowListener( new WindowAdapter(){
			public void windowClosing( WindowEvent e ) {
				exit();
			}
		});
	}
	
	public void exit(){

		System.exit( 0 );

	}
}

Danach das MainMenu. Dort wird dann über das Item der JInternalFrame aufgerufen:

Code:
package gui;

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

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class MainMenu extends JMenuBar implements ActionListener {
	
	private static final long serialVersionUID = 3761684610957719088L;

	/** Das Hauptfenster dieses Programme */
	private MainFrame frame;

	private JMenuItem exitItem, mitarbeiterItem, firmaItem, ansprechItem, importItem, helpinfoItem;  

	private InternalFrameCoworker internalFrameCoworker;

	public MainMenu (MainFrame frame) {
		this.frame = frame;
	
		// Set the look and feel
		try
		{
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}

		JMenu fileMenu = new JMenu( "Datei" );
		JMenu windowMenu = new JMenu( "Anzeigen" );
		JMenu importMenu = new JMenu( "Datenimport" );
		JMenu helpMenu = new JMenu( "Hilfe" );
		
		exitItem = new JMenuItem("Beenden");
		exitItem.addActionListener(this);

		mitarbeiterItem = new JMenuItem("Mitarbeiterdaten");
		mitarbeiterItem.addActionListener(this);
		firmaItem = new JMenuItem("Firmen");
		firmaItem.addActionListener(this);
		ansprechItem = new JMenuItem("Ansprechpartner");
		ansprechItem.addActionListener(this);

		importItem = new JMenuItem("Datenimport");
		importItem.addActionListener(this);

		helpinfoItem = new JMenuItem("Version");
		helpinfoItem.addActionListener(this);

		fileMenu.add(exitItem);
		windowMenu.add(mitarbeiterItem);
		windowMenu.add(firmaItem);
		windowMenu.add(ansprechItem);
		importMenu.add(importItem);
		helpMenu.add(helpinfoItem);

		add( fileMenu );
		add( windowMenu );
		add( importMenu );
		add( helpMenu );

	}
	
	public void actionPerformed(ActionEvent evt){
		Object source = evt.getSource();

		if (source == exitItem)
			System.exit(0);

		else if (source == mitarbeiterItem)
		{
			internalFrameCoworker = new InternalFrameCoworker(frame);
		}
		else if (source == firmaItem)
		{
			
		}
		else if (source == ansprechItem)
		{
			
		}
		else if (source == importItem)
		{
			
		}
		else if (source == helpinfoItem)
		{
			JOptionPane.showMessageDialog(frame,"Version 2.0 vom 14.04.2005 \n Autor: Rocco Rignanese", "Versionsinfo", JOptionPane.INFORMATION_MESSAGE);
		}
	}                              
}

Nun noch das JInternalFrame

Code:
package gui;

import java.awt.BorderLayout;

import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class InternalFrameCoworker extends JInternalFrame {

	private static final long serialVersionUID = 3256999969159592242L;

	private JTable mitarbeiterTable;
	//	private JScrollPane scrollPane;
	
	private MainFrame frame;

	public InternalFrameCoworker(MainFrame frame) {
		super("Mitarbeiterdaten", true, true, false, false);
		this.frame = frame;
		
//		mitarbeiterTableModel mitarbeiterTableTm = new mitarbeiterTableModel();		
//		JTable mitarbeiterTable = new JTable(mitarbeiterTableTm);		
		JTable mitarbeiterTable = new JTable();		
		getContentPane().add( new JScrollPane( mitarbeiterTable ), BorderLayout.CENTER );
		
		setLocation(20,10);
		setSize(400,300);
		setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
//		pack();
		setVisible(true);
		frame.getContentPane().add(this);
		moveToFront();

	}
	

}
 

Wildcard

Top Contributor
JInternalFrames werden auf die JDesktopPane gesetzt, und nicht auf ein Frame!
Also muss entweder dein JInternalFrame eine Referenz auf die Pane halten um sich selbst zu adden,
oder du setzt die Frames von aussen auf die DesktopPane
 

spidermobile

Bekanntes Mitglied
Hi Wildcard,

bin ja noch am Lernen. Das was Du mir gesagt hast, ist leider noch für mich ein Buch mit 7 Siegeln. :oops:
Ist der Ansatz überhaupt sinnvoll, oder sollte der Ansatz ganz anders aufgezogen werden?
 

Wildcard

Top Contributor
Hab mir das nicht alles angeschaut, aber auf den ersten Blick würd ich sagen das du nachdem mitarbeiterItem 2x gedrückt wurde keine referenz auf das erste Internal Frame mehr hast. Ist wohl nicht so geschickt...
Wenn ich sowas wie mitarbeiterItem usw lese hast du wohl was größeres vor?
Dann brauchst du in jedem Fall eine geeignete Klassenstruktur (stichwort DesignPatterns, MVC...)
Dann kannst du dir überlegen wo initialisier ich was, wer 'kennt' wen usw...
 

spidermobile

Bekanntes Mitglied
Hallo Wildcard,
ja und nein. Ich bin eingentlich kein Entwickler und werde es auch nicht :roll:
Möchte allerdings lernen, Java zu verstehen.
Ich habe ein kleines Projekt gemacht (Du hast mir dabei auch geholfen !!). Dies hat allerdings noch nicht viel mit objektorientierter Sprache zu tun.
Nun mache ich es mit meinem Wissen ei 2. Mal.
Danke für die Hinweise!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JInternalFrame in Applets? Java Basics - Anfänger-Themen 9
S JInternalFrame in JInternalFrame - Verhalten Java Basics - Anfänger-Themen 2
StrikeTom JColorchooser auf JInternalframe Java Basics - Anfänger-Themen 4
C JInternalFrame in ein JPanel stecken? Java Basics - Anfänger-Themen 34
H JInternalFrame Java Basics - Anfänger-Themen 8
G Fehler beim erneuten Öffnen von JInternalFrame Java Basics - Anfänger-Themen 7
G Rückgabewert bei JInternalFrame ? Java Basics - Anfänger-Themen 2
G JInternalFrame FensterInFenster-resizable ?Springt zurück! Java Basics - Anfänger-Themen 4
J JInternalFrame überlappen Java Basics - Anfänger-Themen 33
R JInternalFrame fixieren Java Basics - Anfänger-Themen 4
G Von einem JinternalFrame auf ein anderes zugreifen! Java Basics - Anfänger-Themen 18
M Probleme bei JInternalFrame Java Basics - Anfänger-Themen 2
J JInternalFrame: Warum funktioniert das hier nicht? Java Basics - Anfänger-Themen 11
G mehrfaches Öffnen eines JInternalFrame verhindern Java Basics - Anfänger-Themen 11
S Auf JInternalFrame warten? Java Basics - Anfänger-Themen 2
V Prüfen ob JInternalFrame bereits geöffnet Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
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
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
pkm Eclipse wie mit anderer JAVA-Version starten? Java Basics - Anfänger-Themen 1
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
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
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
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
B Schleife von anderer Methode stoppen? (Start continue) Java Basics - Anfänger-Themen 18
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
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
T OOP GUI aus anderer Klasse updaten Java Basics - Anfänger-Themen 6
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
A JButton in anderer Klasse bearbeiten. Java Basics - Anfänger-Themen 2
M String zerlegen anhand anderer String Java Basics - Anfänger-Themen 6
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
C Methoden Auf Methoden anderer Klassen zugreifen Java Basics - Anfänger-Themen 10
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Methoden Auf Variabler aus anderer Methode zugreifen Java Basics - Anfänger-Themen 5
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
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
arjoopy Methoden Methoden anderer Klassen Java Basics - Anfänger-Themen 6
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
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
Z Wie Objekte anderer Klassen ansprechen? Java Basics - Anfänger-Themen 2
U Code anderer Programmierern verstehen Java Basics - Anfänger-Themen 2
B Liste in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
F Methoden aus anderer classe über nehmen Java Basics - Anfänger-Themen 10
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
W OOP Member anderer Klassen erreichen Java Basics - Anfänger-Themen 1
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 Variablen anderer Klassen Java Basics - Anfänger-Themen 1
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
P Methoden Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 4
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
Mr. Pink Graphics2D in anderer Methode aufrufen Java Basics - Anfänger-Themen 6
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
T Variable aus anderer Klasse Java Basics - Anfänger-Themen 3
A Import anderer Classen aus anderen Projekten Java Basics - Anfänger-Themen 6
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
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

Ähnliche Java Themen

Neue Themen


Oben