Minimieren

Fehler in TV-Browser
Homer

Minimieren

Beitrag von Homer »

Hallo,

wenn ich das Fenster maximiert habe und dann auf minimieren klicke, ist ja nur noch das Symbol im Systray wenn ich da dann aber doppelt draufklicke um das Programm wieder zu öffnen ist es immer verkleinert und nicht mehr maximiert, sodass ich es immer wieder maximieren muss. Es sollte so sein, dass er es maximiert lässt.
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

@Til, Martin:
TVBrowser.java in Z. 337 hat folgende Zeile:
mainFrame.setExtendedState(java.awt.Frame.NORMAL);
Wenn man die deaktiviert, müsste es doch laufen, oder?
Martin
Site Admin
Beiträge: 2357
Registriert: 03 Dez 2003, 21:45
Kontaktdaten:

Beitrag von Martin »

bodo hat geschrieben:@Til, Martin:
TVBrowser.java in Z. 337 hat folgende Zeile:
mainFrame.setExtendedState(java.awt.Frame.NORMAL);
Wenn man die deaktiviert, müsste es doch laufen, oder?
Tut es das? Ich habe mich mal damit gespielt, und hab's nicht geschafft.
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Ich probier das morgen früh mal in der Firma aus, da hab zugriff auf eine Windows-Kiste ;)...
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Also unter meinem Win2000 hat es heute hervorragend funktioniert. Aber man sollte das noch auf anderen Kisten machen.

Was war das Problem dabei?
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

@all : Das ist nur für Martin ;)

So, beim rumspielen unter Linux hatte ich jetzt auch ein Problem. Ich schätze, deswegen hast du Normal gesetzt.

Folgendes:
Wenn das Fenster minimiert wird, und dann versteckt, wird es immernoch minimiert angezeigt wenn es wieder sichtbar wird. Das hab ich komischerweise unter Win2k nich erlebt. Muß ich Montag inna Firma wohl noch mal testen.

Lösung:

Code: Alles auswählen

        mainFrame.addComponentListener(new ComponentListener() {

            public void componentResized(ComponentEvent e) {
                int state = mMainFrame.getExtendedState();
                if ((state & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH) {
                    mState = JFrame.MAXIMIZED_BOTH;
                } else {
                    mState = JFrame.NORMAL;
                }
            }

            public void componentHidden(ComponentEvent e) {}
            public void componentMoved(ComponentEvent e) {}
            public void componentShown(ComponentEvent e) {}
        });
Den Resize-Event abfangen. Da kannst du sehr schön erkennen, wenn eine Komponente maximiert wird oder nicht. Wenn die Maximiert wird, speicher ich den Status einfach in mState, der wird dann benutzt beim setVisible...

Bodo
Martin
Site Admin
Beiträge: 2357
Registriert: 03 Dez 2003, 21:45
Kontaktdaten:

Beitrag von Martin »

bodo hat geschrieben:Was war das Problem dabei?
Soweit ich mich erinnere hat das mit der Wiederherstellung des Fensters nicht recht funktioniert. Aber probier's nur aus!
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Martin, was hälst du von dem Code oben? Soll ich das einbauen?
Martin
Site Admin
Beiträge: 2357
Registriert: 03 Dez 2003, 21:45
Kontaktdaten:

Beitrag von Martin »

bodo hat geschrieben:Martin, was hälst du von dem Code oben? Soll ich das einbauen?
Mir kommt obiger Code sehr bekannt vor. Unter Win2k hatte ich das mal probiert - wie gesagt, ohne Erfolg.

Die Sache ist die: Wenn du JFrame.MAXIMIZED_BOTH verwendest, wird das Fenster zwar maximal groß, allerdings hat das dann nicht den Status "maximiert". D.h. du kannst bei Windows dann noch immer auf den "maximieren"-Button (rechts oben) drücken und die Fenstergröße verändern. Das Fenster ist also dann nicht wirklich maximiert.
Hoffe du verstehst, was ich meine.

Am besten probierst du es erstmal selber unter Windows aus. Wenn du dir sicher bist, daß es geht, check es ein.
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Also das ding versucht nur rauszufinden, ob das Program maximiert wurde. Wenn dies geschieht, haut der Listener rein und merkt sich das.

Danach setzt der ensprechend das Fenster beim wiederherstellen. Unter Linux tut das wunderbar. Ich werd Montag mal aufa Arbeit probieren ... (ich sollte mal VMWare auf meinem Rechner hier draufknallen ;) )

Bodo
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Habs nun unter Windows getestet (hab mir extra mein altes 2k wieder installiert *iiiigit* ;) ).

Es tut wunderbar. Habs eingecheckt....probierts ruhig aus ;)

Bodo
Martin
Site Admin
Beiträge: 2357
Registriert: 03 Dez 2003, 21:45
Kontaktdaten:

Beitrag von Martin »

super!

Bis auf eine Kleinigkeit: Das Öffnen sollte nicht nur mit dem Doppelklick, sondern auch über den Menüeintrag "Öffnen" funktionieren. ;-) (Zeile 340, TVBrowser.java)
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Och, verdammt...jetzt darf ich wieder in Win. Bin doch gerade froh, das mein Grub wieder läuft (windows überschreibt den ja immer bei der installation :( )

Ich änder das gleich mal!

Bodo
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Is geändert...
so, nun wieder zu Linux ;)
Gast

Beitrag von Gast »

zunächst einmal auch von mir ein großes lob für das probramm. bin über irgendeine computerzeitschrift auf euch gestoßen und ich finde es klasse.
und nun zum problem.
wenn ich tvb in systray minimiere und ihn danach wieder entminimiere ist er immer noch nicht im vollen fenster, also maximiert. ist das in der 1.0 rc4 noch nicht drin?
Antworten