![]() |
|
|
|||||||
| AWT, Swing & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI) sowie zur Grafikprogrammierung (2D / 3D) |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 15.03.2006
Beiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo @all!
Ich habe ein Problem, und zwar habe ich einen JFrame (Klasse A), der eine DesktopPane besitzt. Auf dieser Desktop-Pane habe ich einen InternalFrame (Klasse B). Bei einem bestimmten Ereignis in B soll ein zweiter InternalFrame (Klasse C) erzeugt und auf dem DesktopPane von Klasse A angezeigt werden. Hierfür besitzt Klasse A eine Methode addWindow(C einFenster), welche das Fensterobjekt der DesktopPane von A hinzufügt. Code:
public void addWindow(C child)
{
jDesktopPane.add(child);
jDesktopPane.revalidate();
}
Liegt das Problem eventuell darin, dass ich die DesktopPane verändere nachdem ich sie dem Fenster A als Content Pane zugewiesen hab. Wenn ja was muss ich tun damit es funktioniert? |
|
|
| #2 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 10.05.2005
Beiträge: 7.403
Blog-Einträge: 9
Abgegebene Danke: 6
Erhielt 86 Danke für 82 Beiträge
|
Wie wird denn das Kind gezeugt?
Etwa so?: Code:
child = new JInternalFrame();
child.setVisible(true);//<--- WICHTIG für die Geburt!
child.setBounds(90, 60, 270, 170);
__________________
Lerne anzuhalten -- oder nichts lohnendes kann dich erreichen. |
|
|
| #3 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 15.03.2006
Beiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Ja, so in etwa...
Code:
(...)
A.addWindow(new C());
(...)
// und im Konstruktor von C:
(...)
this.setVisible(true);
Bounds sind auch so gesetzt, dass man es eigentlich sehen müsste. |
|
|
| #5 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 15.03.2006
Beiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
validate() hab ich schon an allen möglichen Stellen ausprobiert, hilft leider nicht :-\
Ist es vielleicht ein Problem, dass das Fenster durch eine andere Klasse erzeugt wird, als die, welche das Fenster anzeigen soll? (da das fenster ja als Objekt beim Methodenaufruf übergeben wird)... eigentlich nicht oder? |
|
|
| #6 (permalink) | |
|
Java-Forum Team
Site Operator
Registriert seit: 24.04.2004
Beiträge: 9.311
Abgegebene Danke: 5
Erhielt 94 Danke für 94 Beiträge
|
JInternalFrames werden ausnahmsweise mit show() angezeigt.
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JInternalFrame.html#show()
__________________
Schöne Grüße, L-ectron-X Programmieren lernt man nur durch programmieren. www.java-forum.org - Java programmieren aus Leidenschaft www.byte-welt.de - Die Welt des Programmierens "Wenn man die Buchstaben von Bundeskanzlerin umstellt, kommt Bankzinsenluder raus..." |
|
|
| #7 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 10.05.2005
Beiträge: 7.403
Blog-Einträge: 9
Abgegebene Danke: 6
Erhielt 86 Danke für 82 Beiträge
|
Code:
/*
* KlasseA.java
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KlasseA extends JFrame {
public KlasseA() {
super("Frame A");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,300);
setLocationRelativeTo(null);
jDesktopPane = new JDesktopPane();
getContentPane().add(jDesktopPane, BorderLayout.CENTER);
B frameB = new B(this);
addWindow(frameB);
}
public void addWindow(B child) {
jDesktopPane.add(child);
}
public void addWindow(C child) {
jDesktopPane.add(child);
}
public static void main(String args[]) {new KlasseA().setVisible(true);}
private JDesktopPane jDesktopPane;
}
class B extends JInternalFrame{
public B(KlasseA parent){
this.parent = parent;
setTitle("Frame B");
setVisible(true);
setBounds(40, 40, 160, 100);
JButton frameC_Btn = new JButton("Frame C anzeigen");
frameC_Btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
frameC_BtnActionPerformed(evt);
}
});
add(frameC_Btn, BorderLayout.NORTH);
}
private void frameC_BtnActionPerformed(ActionEvent evt){
C frameC = new C();
parent.addWindow(frameC);
}
private KlasseA parent;
}
class C extends JInternalFrame{
public C(){
setTitle("Frame C");
setVisible(true);
setBounds(40, 170, 160, 100);
}
}
__________________
Lerne anzuhalten -- oder nichts lohnendes kann dich erreichen. |
|
|
| #8 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 15.03.2006
Beiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Habe das Problem gelöst!!!
Es lag nicht an der Methode selbst, sondern ich hab durch einen falschen Aufruf in der main() die ganze Zeit ungewollt zwei identische Hauptfenster gehabt. Nur eines davon war sichtbar, und die neuen InternalFrames wurden die ganze Zeit im unsichtbaren zweiten Fenster angezeigt :-\ Wen's interessiert: Habe das Singleton-Entwurfsmuster eingesetzt, um von überall auf ein- und dasselbe Fenster zugreifen zu können. Code:
class A extends JFrame
{
private static A instance = null;
public static A getInstance()
{
if (instance == null)
{
instance = new A();
// (...) Initialisieren von A
}
return instance;
}
Danke Euch trotzdem für die Ratschläge
|
|
|
| #9 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 15.03.2006
Beiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
@André:
Danke für die Mühe es extra auszuprobieren. Auch wenn sich mein Problem als was anderes herausgestellt hat Funktioniert übrigens auch prima, wie bei mir jetzt auch ![]() Thx |
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Problem mit erzeugen eienr neuen Session | habeKA | Allgemeine Java-Themen | 3 | 03.09.2008 10:31 |
| BufferedImage & Scaling: Altes Problem im neuen Gewand | Steve™ | AWT, Swing & SWT | 2 | 04.02.2008 14:52 |
| Erzeugung von neuen Komponeten zur Laufzeit (mit Matisse) | Jessi27 | AWT, Swing & SWT | 0 | 27.09.2007 10:03 |
| Problem beim erstellen eines neuen Elements (JDOM) | Paladin | XML und Co. | 5 | 12.09.2005 14:04 |
| Problem beim Button erstellen in einem Neuen Frame | Java Basics - Anfänger-Themen | 1 | 25.04.2004 19:36 | |