SystemTray: Programm sol im Hintergrund weiter laufen

  • Themenstarter programmierer123
  • Beginndatum
P

programmierer123

Aktives Mitglied
Hallo,
bei Klick auf den Schließen oder Minimieren Button, soll mein Programm nicht geschlossen werden sondern weiterhin im Hintergrund laufen.
Es gibt z.B. die Klassen SystemTray und TrayIcon aber ich weiß trotzdem nicht genau, wie ich das programmieren soll.
Die Klasse TrayIcon hat schon fertigen Code aber ich verstehe nicht alles darin.

Wozu ist z.B. der Code für das PopUpMenu da bzw. was macht der Code?
Brauche ich den gesamten Code?
Brauche ich irgendwelche Listener?

SystemTray:
https://docs.oracle.com/javase/7/docs/api/

TrayIcon:
https://docs.oracle.com/javase/7/docs/api/


Über Eure Hilfe bin ich sehr dankbar.
 
X

Xyz1

Gast
Das ist unabhängig von SystemTray s. Sollte man aber generell nicht machen, weil der User in der Annahme ist, das Programm sei geschlossen, wenn er "das Fester" schließt.
 
P

programmierer123

Aktives Mitglied
Das Programm sollte unten rechts in der Taskleiste angezeigt werden. Bei Klick auf das Icon öffnet sich wieder das aktuelle Fenster.
 
M

Meniskusschaden

Top Contributor
bei Klick auf den Schließen oder Minimieren Button, soll mein Programm nicht geschlossen werden sondern weiterhin im Hintergrund laufen.
Wie schliesst du dein Programm denn bisher? Das musst du eben so ändern, dass es nicht beendet sondern nur versteckt wird.
Es gibt z.B. die Klassen SystemTray und TrayIcon aber ich weiß trotzdem nicht genau, wie ich das programmieren soll.
Eine einfache Möglichkeit: Dem SystemTray ein TrayIcon hinzufügen, dem TrayIcon einen ActionListener hinzufügen und den ActionListener so programmieren, dass er dein Programm wieder sichtbar macht.
Wozu ist z.B. der Code für das PopUpMenu da bzw. was macht der Code?
Vermutlich erzeugt er ein Popup-Menü.
Brauche ich den gesamten Code?
Nur wenn du ein Popup-Menü haben willst.
 
P

programmierer123

Aktives Mitglied
Ich habe jetzt versucht so einen TrayIcon zu programmieren.
Könnt ihr mir sagen, warum das Icon nicht unten rechts angezeigt wird?

Java:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class TerminSoftware extends JFrame {

    private static final long serialVersionUID = 1L;

    public TerminSoftware() {

        setupInteractions();
        pack();
    }
   
    private void setupInteractions() {
        this.addWindowListener(new MyWindowListener());
    }
   
    private class MyWindowListener extends WindowAdapter{
        @Override
        public void windowClosing(WindowEvent e) {
           
            TrayIcon trayIcon = null;
            {
                if (SystemTray.isSupported()) {
                    // get the SystemTray instance
                    SystemTray tray = SystemTray.getSystemTray();
                    // load an image
                    Image image = Toolkit.getDefaultToolkit().getImage("res/appdefault.png");
                    // create a action listener to listen for default action executed on the tray
                    // icon
                    ActionListener listener = new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            // execute default action of the application
                            // ...
                            TerminSoftware.this.setVisible(false);
                        }
                    };

                } else {
                    // disable tray option in your application or
                    // perform other actions

                }

            }
           
        }
    }

   
}
 
P

programmierer123

Aktives Mitglied
Das Icon wird jetzt unten rechts angezeigt.
Es fehlen noch folgende Dinge.

- Klick auf Icon in Taskleiste => Fenster verschwindet/erscheint
- PopUpMenu: TerminSoftware beenden listener
- PopUpMenu: TerminSoftware anzeigen listener

Für all die Dinge brauche ich Listener. Wie bekomme ich aber heraus, welche Listener ich für die oberen 3 Sachen verwenden soll?

Mein Code:
Java:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class TerminSoftware extends JFrame {

    private static final long serialVersionUID = 1L;

    public TerminSoftware() {

        setupInteractions();
        pack();
    }
   
    private void setupInteractions() {
        this.addWindowListener(new MyWindowListener());
       
    }
   
    private class MyWindowListener extends WindowAdapter{
        @Override
        public void windowClosing(WindowEvent e) {
           
             TrayIcon trayIcon = null;
             if (SystemTray.isSupported()) {
                 // get the SystemTray instance
                 SystemTray tray = SystemTray.getSystemTray();
                 // load an image
                 Image image = Toolkit.getDefaultToolkit().getImage("res/appdefault.png");
                 // create a action listener to listen for default action executed on the tray icon
                 ActionListener listener = new ActionListener() {
                     public void actionPerformed(ActionEvent e) {
                         // execute default action of the application
                         // ...
                     }
                 };
                 // create a popup menu
                 PopupMenu popup = new PopupMenu();
                 // create menu item for the default action
                 MenuItem anzeigen = new MenuItem(Konstanten.PROGRAMMNAME + " anzeigen");
                 anzeigen.addActionListener(listener);
                 popup.add(anzeigen);
                 MenuItem beenden = new MenuItem(Konstanten.PROGRAMMNAME + " beenden");
                 beenden.addActionListener(listener);
                 popup.add(beenden);
                 /// ... add other items
                 // construct a TrayIcon
                 trayIcon = new TrayIcon(image, Konstanten.PROGRAMMNAME, popup);
                 // set the TrayIcon properties
                 trayIcon.addActionListener(listener);
                 // ...
                 // add the tray image
                 try {
                     tray.add(trayIcon);
                 } catch (AWTException ex) {
                     System.err.println(ex);
                 }
                 // ...
             } else {
                 // disable tray option in your application or
                 // perform other actions
                
             }
             // ...
             // some time later
             // the application state has changed - update the image
             if (trayIcon != null) {
                
             }
             // ...
           
        }
       
    }

   
}
 
M

Meniskusschaden

Top Contributor
Wie bekomme ich aber heraus, welche Listener ich für die oberen 3 Sachen verwenden soll?
Das kannst du machen wie du willst. Entweder nimmst du den, den du schon hast oder du programmierst für jedes Objekt einen eigenen. Du kannst ja nachsehen, welche addXxxxxListener-Methoden die jeweiligen Objekte anbieten, um herauszufinden, was für Listener untzerstützt werden.
Klick auf Icon in Taskleiste => Fenster verschwindet/erscheint
Wenn das ein einfacher Klick sein soll, geht das nicht mit einem ActionListener. Dafür könntest du einen MouseListener verwenden.
 
P

programmierer123

Aktives Mitglied
Es wurde soweit programmiert aber eine Sache fehlt noch.
Beim Klick auf das Icon soll die Software ein/ausgeblendet werden. Im Moment passiert das nur bei einem Doppelklick.
Ich finde aber einfach nicht heraus, wo der Fehler liegt.
Könnt ihr mir weiterhelfen?

Java:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.SwingUtilities;
import org.omg.CORBA.PRIVATE_MEMBER;
public class TrayIconFeature {
    TerminSoftware terminsoftware;
    public TrayIconFeature(TerminSoftware terminSoftware) {
        this.terminsoftware = terminSoftware;
        {
            TrayIcon trayIcon = null;
            if (!SystemTray.isSupported()) {
                // TODO Meldung ausgeben, bevor Programm beendet wird
                System.exit(-1);
            }
            Image imageIcon = Toolkit.getDefaultToolkit().getImage("res/appdefault.png");
            SystemTray tray = SystemTray.getSystemTray();
            PopupMenu popup = new PopupMenu();
            MenuItem anzeigen = new MenuItem(Konstanten.PROGRAMMNAME + " anzeigen");
            MenuItem ausblenden = new MenuItem(Konstanten.PROGRAMMNAME + " ausblenden");
            MenuItem beenden = new MenuItem(Konstanten.PROGRAMMNAME + " beenden");
          
            popup.add(anzeigen);
            popup.add(ausblenden);
            popup.addSeparator();
            popup.add(beenden);
            trayIcon = new TrayIcon(imageIcon, "TerminSoftware", popup);
            try {
                tray.add(trayIcon);
            } catch (AWTException e) {
                e.printStackTrace();
            }
          
            class windowListener extends WindowAdapter {
                @Override
                public void windowClosing(WindowEvent e) {
                    popup.remove(ausblenden);
                    popup.insert(anzeigen,0);
                }
                @Override
                public void windowOpened(WindowEvent e) {
                    popup.remove(anzeigen);
                    popup.insert(ausblenden,0);
                }
              
                @Override
                public void windowDeiconified(WindowEvent e) {
                    popup.remove(anzeigen);
                    popup.insert(ausblenden,0);
                }
                @Override
                public void windowIconified(WindowEvent e) {
                    popup.remove(ausblenden);
                    popup.insert(anzeigen,0);
                }
            }
            terminSoftware.addWindowListener(new windowListener());
          
            class iconListener implements ActionListener {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    if(terminSoftware.isVisible()) {
                        terminSoftware.setVisible(false);
                    }
                    else {
                        terminSoftware.setVisible(true);
                    }
                }
            }
            trayIcon.addActionListener(new iconListener());
          
          
            class anzeigenListener implements ActionListener {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    terminSoftware.setVisible(true);
                }
            }
            anzeigen.addActionListener(new anzeigenListener());
          
          
            class ausblendenListener implements ActionListener {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    terminSoftware.setVisible(false);
                }
            }
            ausblenden.addActionListener(new ausblendenListener());
          
          
            class closeProgram implements ActionListener {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    System.exit(0);
                }
            }
            beenden.addActionListener(new closeProgram());
        }
    }
}
 
P

programmierer123

Aktives Mitglied
Kannst du auch erklären, warum es mit einem Actionlistener nicht geht und man dafür einen MouseListener benötigt?

Aber selbst mit dem MouseListener habe ich immer noch dasselbe Problem. Das Fenster wird nicht ein/ausgeblendet.

Java:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.SwingUtilities;



public class TrayIconFeature {

    TerminSoftware terminsoftware;

    public TrayIconFeature(TerminSoftware terminSoftware) {
        this.terminsoftware = terminSoftware;

        {
            TrayIcon trayIcon = null;
            if (!SystemTray.isSupported()) {
                // TODO Meldung ausgeben, bevor Programm beendet wird
                System.exit(-1);
            }

            Image imageIcon = Toolkit.getDefaultToolkit().getImage("res/appdefault.png");
            SystemTray tray = SystemTray.getSystemTray();
            PopupMenu popup = new PopupMenu();

            MenuItem anzeigen = new MenuItem(Konstanten.PROGRAMMNAME + " anzeigen");
            MenuItem ausblenden = new MenuItem(Konstanten.PROGRAMMNAME + " ausblenden");
            MenuItem beenden = new MenuItem(Konstanten.PROGRAMMNAME + " beenden");
           
            popup.add(anzeigen);
            popup.add(ausblenden);
            popup.addSeparator();
            popup.add(beenden);

            trayIcon = new TrayIcon(imageIcon, "TerminSoftware", popup);

            try {
                tray.add(trayIcon);
            } catch (AWTException e) {
                e.printStackTrace();
            }

           
            class windowListener extends WindowAdapter {

                @Override
                public void windowClosing(WindowEvent e) {
                    popup.remove(ausblenden);
                    popup.insert(anzeigen,0);

                }

                @Override
                public void windowOpened(WindowEvent e) {
                    popup.remove(anzeigen);
                    popup.insert(ausblenden,0);
                }
               
                @Override
                public void windowDeiconified(WindowEvent e) {
                    popup.remove(anzeigen);
                    popup.insert(ausblenden,0);
                }

                @Override
                public void windowIconified(WindowEvent e) {
                    popup.remove(ausblenden);
                    popup.insert(anzeigen,0);
                }

            }
            terminSoftware.addWindowListener(new windowListener());


            class LeftMouseListener extends MouseAdapter{

                @Override
                public void mouseClicked(MouseEvent e) {
                    if(SwingUtilities.isLeftMouseButton(e) && terminSoftware.isVisible()){
                        terminSoftware.setVisible(false);
                    }
                    else if(SwingUtilities.isLeftMouseButton(e) && !terminSoftware.isVisible()){
                        terminSoftware.setVisible(true);
                    }
                }
            }
            trayIcon.addMouseListener(new LeftMouseListener());

/*
            class IconListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    if(terminSoftware.isVisible()) {
                        terminSoftware.setVisible(false);
                    }
                    else {
                        terminSoftware.setVisible(true);
                    }
                }
            }
            trayIcon.addActionListener(new IconListener());

            */
           
           
            class anzeigenListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    terminSoftware.setVisible(true);
                }
            }
            anzeigen.addActionListener(new anzeigenListener());
           
           
            class ausblendenListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    terminSoftware.setVisible(false);
                }
            }
            ausblenden.addActionListener(new ausblendenListener());
           
           
            class closeProgram implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    System.exit(0);
                }
            }
            beenden.addActionListener(new closeProgram());
        }
    }
}
 
M

Meniskusschaden

Top Contributor
Kannst du auch erklären, warum es mit einem Actionlistener nicht geht und man dafür einen MouseListener benötigt?
Ein TrayIcon löst bei einem einfachen Klick eben kein ActionEvent aus, also kann man es dafür nicht verwenden. Ich habe es aber nur unter Windows ausprobiert. Unter anderen Betriebssystemen (oder anderen Desktop-Umgebungen) mag das vielleicht anders sein.
Aber selbst mit dem MouseListener habe ich immer noch dasselbe Problem. Das Fenster wird nicht ein/ausgeblendet.
Ich glaube eher nicht, dass das an diesem Codeausschnitt liegt. Wie benutzt du die Klasse denn? Am besten wäre ein lauffähiges Beispiel.
 
P

programmierer123

Aktives Mitglied
Hier mal der gesamte Code:

Java:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.SwingUtilities;



public class TrayIconFeature {

    TerminSoftware terminsoftware;

    public TrayIconFeature(TerminSoftware terminSoftware) {
        this.terminsoftware = terminSoftware;

        {
            TrayIcon trayIcon = null;
            if (!SystemTray.isSupported()) {
                // TODO Meldung ausgeben, bevor Programm beendet wird
                System.exit(-1);
            }

            Image imageIcon = Toolkit.getDefaultToolkit().getImage("res/appdefault.png");
            SystemTray tray = SystemTray.getSystemTray();
            PopupMenu popup = new PopupMenu();

            MenuItem anzeigen = new MenuItem(Konstanten.PROGRAMMNAME + " anzeigen");
            MenuItem ausblenden = new MenuItem(Konstanten.PROGRAMMNAME + " ausblenden");
            MenuItem beenden = new MenuItem(Konstanten.PROGRAMMNAME + " beenden");
           
            popup.add(anzeigen);
            popup.add(ausblenden);
            popup.addSeparator();
            popup.add(beenden);

            trayIcon = new TrayIcon(imageIcon, "TerminSoftware", popup);

            try {
                tray.add(trayIcon);
            } catch (AWTException e) {
                e.printStackTrace();
            }

           
            class windowListener extends WindowAdapter {

                @Override
                public void windowClosing(WindowEvent e) {
                    popup.remove(ausblenden);
                    popup.insert(anzeigen,0);

                }

                @Override
                public void windowOpened(WindowEvent e) {
                    popup.remove(anzeigen);
                    popup.insert(ausblenden,0);
                }
               
                @Override
                public void windowDeiconified(WindowEvent e) {
                    popup.remove(anzeigen);
                    popup.insert(ausblenden,0);
                }

                @Override
                public void windowIconified(WindowEvent e) {
                    popup.remove(ausblenden);
                    popup.insert(anzeigen,0);
                }

            }
            terminSoftware.addWindowListener(new windowListener());


            class LeftMouseListener extends MouseAdapter{

                @Override
                public void mouseClicked(MouseEvent e) {
                    if(SwingUtilities.isLeftMouseButton(e) && terminSoftware.isVisible()){
                        terminSoftware.setVisible(false);
                    }
                    else if(SwingUtilities.isLeftMouseButton(e) && !terminSoftware.isVisible()){
                        terminSoftware.setVisible(true);
                    }
                }
            }
            trayIcon.addMouseListener(new LeftMouseListener());

/*
            class IconListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    if(terminSoftware.isVisible()) {
                        terminSoftware.setVisible(false);
                    }
                    else {
                        terminSoftware.setVisible(true);
                    }
                }
            }
            trayIcon.addActionListener(new IconListener());

            */
           
           
            class anzeigenListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    terminSoftware.setVisible(true);
                }
            }
            anzeigen.addActionListener(new anzeigenListener());
           
           
            class ausblendenListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    terminSoftware.setVisible(false);
                }
            }
            ausblenden.addActionListener(new ausblendenListener());
           
           
            class closeProgram implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    System.exit(0);
                }
            }
            beenden.addActionListener(new closeProgram());
        }
    }
}

Java:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;

public class TerminSoftware extends JFrame {

    private static final long serialVersionUID = 1L;

    public TerminSoftware() {

       
        new TrayIconFeature(this);
        pack();
    }

   
}

Java:
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.print.DocFlavor.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;



public class TerminSoftwareDemo {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new TerminSoftware();
                try {
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (InstantiationException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (UnsupportedLookAndFeelException e) {
                    e.printStackTrace();
                }
                try {
                    // ImageIcon oben links
                    frame.setIconImage(ImageIO.read(new File("res/appdefault.png")));
                }
                catch (IOException exc) {
                    exc.printStackTrace();
                }
                frame.setTitle("Termin Software");
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
 
truesoul

truesoul

Top Contributor
Hallo.

Also bei mir wird nur das TrayIcon nicht angezeigt bzw. das Bild dazu.
Aber ein Klick auf das Unsichtbare Icon ruft das Menü auf und führt die Aktion dementsprechend durch.
Z. B Beendet die Anwendung.

Grüße
 
M

Meniskusschaden

Top Contributor
Ja, bei mir funktioniert es auch. Rechtsklick ruft das Menü auf, Linksklick blendet die Anwendung wechselweise ein oder aus. Die kontextabhängige Anpassung der MenuItems ist aber noch fehlerhaft.
 
P

programmierer123

Aktives Mitglied
Ich verstehe nicht, warum es nicht bei mir funktioniert?
Habe mal ein Video dazu gedreht.

 
M

Meniskusschaden

Top Contributor
Das wird daran liegen, dass du das Fenster nicht geschlossen sondern minimiert hast (den Fall hatte ich nicht getestet). Über das TrayIcon schaltest du also nur die Sichtbarkeit des minimierten Fensters um. Das müsstest du eigentlich in der Taskleiste sehen können.
 
P

programmierer123

Aktives Mitglied
Danke, und wie schaffe ich es, dass das Fenster angezeigt wird, wenn ich auf den Minimieren Button klicke?
 
P

programmierer123

Aktives Mitglied
Wenn ich auf das Icon klicke, dann wird das Fenster minimiert aber das einblenden funktioniert immer noch nicht.

Java:
class LeftMouseListener extends MouseAdapter{

                @Override
                public void mouseClicked(MouseEvent e) {
                    if(SwingUtilities.isLeftMouseButton(e) && terminSoftware.isVisible()){
                        terminSoftware.setExtendedState(Frame.ICONIFIED);


                    }
                    else if(SwingUtilities.isLeftMouseButton(e) && !terminSoftware.isVisible()){
                        terminSoftware.setExtendedState(Frame.NORMAL);
                    }
                }
            }
            trayIcon.addMouseListener(new LeftMouseListener());
 
M

Meniskusschaden

Top Contributor
Wenn es minimiert ist, ist es sichtbar (sofern es nicht gerade unsichtbar ist;)). Deine Bedingung trifft in dem Fall also nicht zu.
 
P

programmierer123

Aktives Mitglied
Also muss ich überprüfen, ob das Fenster minimiert wurde?
Wie mache ich das?
 
Zuletzt bearbeitet:
M

Meniskusschaden

Top Contributor
Also muss ich überprüfen, ob das Fenster minimiert wurde?
Entweder das oder du sorgst beim Minimieren dafür, dass das Fenster unsichtbar wird. Du mußt dir eben überlegen, wie dein Programm sich verhalten soll und dann setVisible()/isVisible() und setExtendedState()/getExtendedState() entsprechend einsetzen.

Wie mache ich das?
Siehe voriger Absatz. Der Status des Frames ist übrigens eine Bitmaske. Da würde ich deshalb darauf achten, nur das gewünschte Bit zu setzen bzw. abzufragen oder den vorigen Status zu speichern und später wieder herzustellen. Z.B. soll das Fenster ja wahrscheinlich wieder maximiert werden, falls es vor dem Schliessen oder Minimieren maximiert war.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Java MenuItem Icon Systemtray Java Basics - Anfänger-Themen 3
L SystemTray-displayMessage nur einmal Anzeigen Java Basics - Anfänger-Themen 2
M SystemTray zeigt kein Icon an Java Basics - Anfänger-Themen 11
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
A Programm Histogram Java Basics - Anfänger-Themen 2
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
CT9288 Interaktion mit laufendem Programm -Fachbegriffe Java Basics - Anfänger-Themen 2
Gaudimagspam Assertions im Programm hinzufügen Java Basics - Anfänger-Themen 4
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
W Programm dass Palindrome erkennt Java Basics - Anfänger-Themen 6
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
Zrebna Programm kann aus der Konsole nicht gestartet werden (in der IDE läuft es) Java Basics - Anfänger-Themen 2
K Error bei meinem Programm - Hilfe Java Basics - Anfänger-Themen 8
J Programm schreiben Java Basics - Anfänger-Themen 5
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
T Programm Schleife/if Java Basics - Anfänger-Themen 2
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
G While/If Programm Java Basics - Anfänger-Themen 2
G Java-Programm Terminal Java Basics - Anfänger-Themen 2
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
I Java Programm sieht wie exe aus. Java Basics - Anfänger-Themen 3
J Programm vereinfachen Java Basics - Anfänger-Themen 5
G Java-Programm weitergeben Java Basics - Anfänger-Themen 14
Kirby.exe Programm startet nachdem es compiled wurde nicht Java Basics - Anfänger-Themen 17
T Programm effizienter gestalten Java Basics - Anfänger-Themen 17
M Ein Programm erweitern, wie? Java Basics - Anfänger-Themen 3
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M Programm per Nutzereingabe ändern Java Basics - Anfänger-Themen 3
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
G Dezimal zu Binärcode Programm Java Basics - Anfänger-Themen 9
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
M Problem mit meinem Programm Java Basics - Anfänger-Themen 6
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
R Compiler-Fehler HalloWelt-Programm korrekt abgeschrieben, trotzdem Fehlermeldungen Java Basics - Anfänger-Themen 2
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
A Java-Programm läuft bei installierter JDK aber nicht mit JRE? Java Basics - Anfänger-Themen 5
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
I Datei in Programm speichern Java Basics - Anfänger-Themen 3
H Programm compilieren Java Basics - Anfänger-Themen 10
W Java Programm mit API Anbindung Java Basics - Anfänger-Themen 2
D Java Programm mit JavaScript einbinden Java Basics - Anfänger-Themen 8
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
K Programm ausführen Java Basics - Anfänger-Themen 2
X Java Programm MacOS Java Basics - Anfänger-Themen 1
O Programm verstehen :D Java Basics - Anfänger-Themen 4
A Programm in Konsole Java Basics - Anfänger-Themen 4
S Programm als Daemon ausfuehren - wie rufe ich es auf..? Java Basics - Anfänger-Themen 3
A Wie gebe ich bei android eine string im programm aus? Java Basics - Anfänger-Themen 4
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
L Fehler im Programm bei Ausgabe Java Basics - Anfänger-Themen 21
F Array-Programm Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
V Vererbung Eclipse startet das Programm nicht und rechnet nicht Java Basics - Anfänger-Themen 6
R Primzahlen Zähler Programm / Benachbarte Primzahlen Java Basics - Anfänger-Themen 30
N Verbesserungsvorschläge zu Wegfinder Programm Java Basics - Anfänger-Themen 26
D Warum gibt mir das Programm nicht den Array invertiert an ? Java Basics - Anfänger-Themen 1
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
L Programm lässt sich nicht starten! Java Basics - Anfänger-Themen 1
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
B Tic Tac Toe - Programm Java Basics - Anfänger-Themen 2
N BitFlags Programm (switch on/off , swap und isSet) Java Basics - Anfänger-Themen 7
T Woher nimmt das Programm die Variablenwerte???? Java Basics - Anfänger-Themen 2
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
A Shopping Cart Programm. Verstehe einige Zusammenhänge nicht Java Basics - Anfänger-Themen 1
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
L Programm zur Codieren nach Rotx Java Basics - Anfänger-Themen 1
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
M Programm, das ein Wort einliest Java Basics - Anfänger-Themen 3
W Warum läuft mein Programm nicht? Java Basics - Anfänger-Themen 14
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
x-tshainge Schleife für ein Würfel Programm Java Basics - Anfänger-Themen 2
N Passwort Anfrage vor Programm start Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
B Programm erwartungswert Java Basics - Anfänger-Themen 16
F Java Programm schließen Java Basics - Anfänger-Themen 1
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B Mit Java anderes Java Programm starten Java Basics - Anfänger-Themen 3
A Kann mir jemand dieses Programm erklären? Java Basics - Anfänger-Themen 1
J Java Programm Java Basics - Anfänger-Themen 29
C Programm dreht extra Schleife, warum? Java Basics - Anfänger-Themen 6
K Armstrong Programm geht nur bis 1000, aber nicht weiter Java Basics - Anfänger-Themen 2
B Java Eclipse Programm in einer Batch ausführen Java Basics - Anfänger-Themen 3
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
P Sägezahn Muster Programm Java Basics - Anfänger-Themen 2
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben