Internal Frame wird nicht angezeigt

ulki

Erfahrenes Mitglied
Hi Leute ich bins mal wieder! Und wieder will meine GUI nicht so wie ich:

Ich habe für ein About Fenster einen JInternalFrame geschrieben. Leider wird er nicht angezeigt. Ich habe jeden gefragt den ich persöhnlich erwischen konnte und habe alles ausprobiert, was ich im Netz gefunden habe. Ihr seit meine letzte Hoffnung.

Hier der Code:

Code:
private void aboutButtonMousePressed(java.awt.event.MouseEvent evt) {                                         
        JInternalFrame insideWindow = new JInternalFrame("Produktinformation", true, true, false);
        //creates a resizable, closable and not maximizable internal frame
        insideWindow.getContentPane().setLayout(new BorderLayout());
        
        java.awt.GridBagConstraints gridBagConstraints;

        JPanel jPanel1 = new javax.swing.JPanel();
        JLabel jLabel1 = new javax.swing.JLabel();
        JLabel jLabel2 = new javax.swing.JLabel();
        JLabel jLabel3 = new javax.swing.JLabel();
        JLabel jLabel4 = new javax.swing.JLabel();
        JLabel jLabel5 = new javax.swing.JLabel();
        JLabel jLabel6 = new javax.swing.JLabel();
        JLabel jLabel7 = new javax.swing.JLabel();
        JLabel jLabel8 = new javax.swing.JLabel();
        JLabel jLabel9 = new javax.swing.JLabel();
        JLabel jLabel10 = new javax.swing.JLabel();
        JLabel jLabel11 = new javax.swing.JLabel();
        JLabel jLabel12 = new javax.swing.JLabel();
        JLabel jLabel13 = new javax.swing.JLabel();

        jPanel1.setLayout(new java.awt.GridBagLayout());

        jLabel1.setText("Version");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(10, 8, 17, 62);
        jPanel1.add(jLabel1, gridBagConstraints);

        jLabel2.setText("Entwickler");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 50);
        jPanel1.add(jLabel2, gridBagConstraints);

        jLabel3.setText("Info");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 1);
        jPanel1.add(jLabel3, gridBagConstraints);

        jLabel4.setText("Name 1");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanel1.add(jLabel4, gridBagConstraints);

        jLabel5.setText("Name 2");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanel1.add(jLabel5, gridBagConstraints);

        jLabel6.setText("Name 3");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 17, 0);
        jPanel1.add(jLabel6, gridBagConstraints);

        jLabel7.setText("NAme 4");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanel1.add(jLabel7, gridBagConstraints);

        jLabel8.setText("Und hier kommt jetzt der Infotext");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanel1.add(jLabel8, gridBagConstraints);

        jLabel9.setText("Vortsetzung Info");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanel1.add(jLabel9, gridBagConstraints);

        jLabel10.setText("noch mehr Info");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanel1.add(jLabel10, gridBagConstraints);

        jLabel11.setText("Version 1.0");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
        jPanel1.add(jLabel11, gridBagConstraints);

        jLabel12.setText("Info    ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 8);
        jPanel1.add(jLabel12, gridBagConstraints);

        jLabel13.setText("und nochmal Infotext");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 8, 0);
        jPanel1.add(jLabel13, gridBagConstraints);

        insideWindow.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
        
        insideWindow.pack();
        insideWindow.setResizable(false);
        
        //insideWindow.setVisible(true);
        insideWindow.show();
        this.getContentPane().add(insideWindow);
    }

Ich habe alle Komponenten drin gelassen, die auch in meinem Original sind, ist nähmlich das erste mal, dass ich mit GridBagLayout arbeite. Ich kann nicht hundertprozentig ausschließen, das der Fehler dort liegt.

Mit System.Out.Println() habe ich festgestellt, das er kommplet durchläuft. Aber wie schon gesagt er zeigt nicht das geringste an.

Für eure Hilfe bin ich schon jetzt dankbar

ulki :)
 
Mal ne Frage: Warum muss es ein InternalFrame sein, reicht nicht auch ein modaler JDialog? Was passiert, wenn Du dafür wirklich einen JDialog benutzt, funktioniert es dann?
 
Naja ich bin mir nicht sicher, ob ich die Gestaltung, wie sie geplant ist mit einem JDialog genauso hinbekomme.

Du kennst doch sicher diese Fenster in denen allerhand über das Programm drin steht:
- Die Versionsnummer
- Wer es erstellt hat
- Wann es erstellt wurde
- Für wen es erstellt wurde
usw.

Das soll da alles rein. Ich werde mal schauen, aber ich glaube nicht, dass soetwas auch mit einem JDialog funktioniert.
 
ulki hat gesagt.:
Das soll da alles rein. Ich werde mal schauen, aber ich glaube nicht, dass soetwas auch mit einem JDialog funktioniert.

Ich schon. Ich halte einen JDialog für solche Sachen für prädestiniert. Ein JDialog unterscheidet sich ja auch nicht viel von einem JFrame - warum und wie Du gerade auf einen InternalFrame kommst, bleibt mir schleierhaft.

Sehe gerade, das ist mein 1000. Beitrag. :)
IIRC habe ich dafür ein Jahr benötigt...
 
Zuletzt bearbeitet:
Naja, ich habe in dem Javatutorial gelesen was sich wohl dafür eignen würde. Und da stehen halt die Internal Frames drinn.

Ich werde es mal ausprobieren. Danke nochmal. Ich melde mich dann wenn ich ein Ergebniss habe

ulki


Habe vorher noch mal was mit den Internal Frames ausprobiert. Das Fensterchen wird jetzt angezeigt, aber alles was vorher im Fenster zu sehen war ist verschwunden und alles ist blau geworden.
Hier die Zeilen die ich hinzugefügt habe:

Code:
JDesktopPane desktop = new JDesktopPane();
        setContentPane(desktop);
und zwar im initComponents des Hauptfensters

mal sehen.... immerhin tut sich was.....
 
Zuletzt bearbeitet:
Hi,

mitlerweile wird das Problem richtig amüsant.

Habe um den blau Effekt zu umgehen einfach im Aufruf des Inneren Fensters alle Objekte nochmal erstellt und sie auf die DesktopPane anstatt auf die ContentPane gelegt. Und schwups wurde alles richtig angezeigt.
Nun ergab sich aber folgendes Problem:

Wenn ich durch klick auf eines der Objekte ein weiteres Fenster öffne, öffnen sich gleich zwei von der Sorte.
Ich kann mir das nur so erklären, dass die Komponenten meines Fensters dann zweimal existieren und übereinanderliegen.
Das würde dann ja auch bedeuten, dass mein DesktopPane blau ist und nur alles versteckt. Wenn ich die DesktopPane also durchsichtig bekäme wären beide Probleme gelöst und es würde so klappen wie ich mir das vorstelle.

Also hat jemand eine Idee, wie man eine JDesktopPane durchsichtig bekommt? Ich werde mal suchen, aber ich bin nicht sehr hoffnungsvoll, da es zu JDesktopPane irgentwie nicht viel gibt.

Danke schonmal

ulki :rolleyes:

PS: Habe das setContentPane in den Aufruf des Inneren Fensters verschoben
 
Habe keine Möglichkeit gefunden die DesktopPane durchsichtig zu machen. Habe daher den Vorschlag von Snape umgesetzt. Funktioniert tadellos.
Danke für den Tipp.

Das Programm macht jetzt was es soll, leider aber keine Lösung für das Problem mit dem Internal Frame.

Aber Lösung ist Lösung :)

danke für Hilfe und Geduld

ulki
 
Zurück