klassenübergreifendes Frame

  • Themenstarter Themenstarter Poseidon
  • Beginndatum Beginndatum
P

Poseidon

Gast
Hallo,

ich hab nur eine simple Frage, die ich gerne beantwortet hätte.

Kann ich mit Java ein klassenübergreifendes Frame programmieren?

Also nur eine Klasse hat ein Frame und die anderen Klassen können auf dieses Frame zugreifen?


Gruß Poseidon
 
Ja nehmen wir jetzt mal an ich programmiere mit der Klasse ohne dem Frame ein Label, ein Button, ein Panel o.Ä..

Kann ich dann einfach mit frame.add(panel .etc) arbeiten?

Ja, ich weiß ich könnte das Label etc. einfach ohne 2. Klasse auf das Frame programmieren, aber mir gehts nur um das Prinzip.
 
Java:
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame {

	public MyFrame() {
		setSize(500, 300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// und was auch immer noch...
	}

}

class MyPanel extends JPanel {

	public MyPanel() {
		//	setText oder was auch immer
	}

	class MyController {
		MyPanel p;
		MyFrame f;

		public MyController() {
			f = new MyFrame();
			p = new MyPanel();
			f.add(p);
		}
	}
}

so kann man das bspw machen...gibt aber auch noch zig andere Möglichkeiten.

wichtig ist, wie auch immer du das machst...dass sich die Komponenten kennen, oder halt Bezug zu einander haben.
 
Zuletzt bearbeitet:
Ich hab mal dein Beispiel ausprobiert, indem ich dem Panel einfach mal eine Farbe gegeben hab.

Aber auf dem Frame ist nichts zu sehen.
 
mmmh, war ja auch nur so als schnelles Bsp gedacht, damit du siehst wie es vom Prinzip her geht.
Hier ein KSKB der auch funzt:

Java:
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame {

	public MyFrame() {
		setSize(500, 300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

	public static void main(String[] args) {
		new MyController();
	}

}

class MyPanel extends JPanel {

	public MyPanel() {
		setBackground(Color.BLUE);
	}

}

class MyController {
	MyPanel p;
	MyFrame f;

	public MyController() {
		f = new MyFrame();
		p = new MyPanel();
		f.add(p);
	}
}
 
Achso, mein letzter Beitrag klang jetzt so als hätte ich es nur kopiert 🙂

Ich wusste natürlich, dass was fehlte, aber trotzdem hat es nicht geklappt.

Aber trotzdem vielen Dank, sehr nett.
 

Neue Themen


Zurück
Oben