javaAnfänger3
Grünschnabel
Hallo,
das ist mein erstes größere Projekt, deswegen bitte ich um etwas Verständnis für meine Fragen.
In meinem Programm will ich eine Tray Funktion einbauen. Könntet ihr mir erklären, was ich falsch gemacht habe bzw. was ich verändern soll?
Über eure Hilfe wäre ich sehr dankbar!
Meine Fragen:
1) Beim Klick auf das Icon soll das Fenster ein/ausgeblendet werden
2) Wenn das Fenster eingeblendet ist und man auf das Icon mit der rechten Maustaste klickt, dann sollen nur die Menüpunkte "Terminsoftware ausblenden" und "Terminsoftware beenden" angezeigt werden und die entsprechende Aktion durchgeführt werden.
3) Wenn das Fenster ausgeblendet ist und man auf das Icon mit der rechten Maustaste klickt, dann sollen nur die Menüpunkte "Terminsoftware einblenden" und "Terminsoftware beenden" angezeigt werden und die entsprechende Aktion durchgeführt werden.
Code:
das ist mein erstes größere Projekt, deswegen bitte ich um etwas Verständnis für meine Fragen.
In meinem Programm will ich eine Tray Funktion einbauen. Könntet ihr mir erklären, was ich falsch gemacht habe bzw. was ich verändern soll?
Über eure Hilfe wäre ich sehr dankbar!
Meine Fragen:
1) Beim Klick auf das Icon soll das Fenster ein/ausgeblendet werden
2) Wenn das Fenster eingeblendet ist und man auf das Icon mit der rechten Maustaste klickt, dann sollen nur die Menüpunkte "Terminsoftware ausblenden" und "Terminsoftware beenden" angezeigt werden und die entsprechende Aktion durchgeführt werden.
3) Wenn das Fenster ausgeblendet ist und man auf das Icon mit der rechten Maustaste klickt, dann sollen nur die Menüpunkte "Terminsoftware einblenden" und "Terminsoftware beenden" angezeigt werden und die entsprechende Aktion durchgeführt werden.
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 java.awt.event.WindowListener;
import javax.swing.JFrame;
public class TerminSoftware extends JFrame {
private static final long serialVersionUID = 1L;
public TerminSoftware() {
new TrayIconFeature(this);
setupInteractions();
pack();
}
private void setupInteractions() {
this.addWindowListener(new disappearWindowListener());
}
private class disappearWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
TerminSoftware.this.setVisible(false);
}
@Override
public void windowDeiconified(WindowEvent e) {
TerminSoftware.this.setVisible(true);
}
@Override
public void windowIconified(WindowEvent e) {
TerminSoftware.this.setVisible(false);
}
}
}
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 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.addSeparator();
popup.add(ausblenden);
popup.addSeparator();
popup.add(beenden);
trayIcon = new TrayIcon(imageIcon, "TerminSoftware", popup);
try {
tray.add(trayIcon);
} catch (AWTException e) {
e.printStackTrace();
}
}
setupInteractions();
}
private void setupInteractions() {
terminsoftware.addMouseListener(new iconClicked());
}
private class iconClicked extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
if (TrayIconFeature.this.terminsoftware.isVisible() && SwingUtilities.isLeftMouseButton(e)) {
TrayIconFeature.this.terminsoftware.setVisible(false);
} else if (!TrayIconFeature.this.terminsoftware.isVisible() && SwingUtilities.isLeftMouseButton(e)) {
TrayIconFeature.this.terminsoftware.setVisible(true);
}
}
}
}