Hallo,
Ich habe mein Programm in die SystemTray gesetzt. Habe dazu 2 MenuItem`s erstellt:
"Programmfenster anzeigen"
"Programm beenden"
Kann auf die Einträge klicken und Text-Ausgaben machen klappt alles. Jetzt möchte noch folgendes erreichen:
1. Beim Start der Anwendung soll das Fenster nicht sichtbar sein, sondern es soll sich sozusagen verstecken in der SystemTray Leiste
Das würde ich mit
machen. Doch...
2. Wenn ich das Fenster wieder sichtbar machen will mit
dann bekomme ich diese Fehlermeldung:
3. Dazu möchte ich noch eine Meldung anzeigen lassen über dem Icon in der SystemTray Anzeige, doch die Meldung erscheint nicht :
Das ist der ganze Code:
Hauptfenster
Der Tabreiter im JFrame(Hauptfenster)
Ich habe mein Programm in die SystemTray gesetzt. Habe dazu 2 MenuItem`s erstellt:
"Programmfenster anzeigen"
"Programm beenden"
Kann auf die Einträge klicken und Text-Ausgaben machen klappt alles. Jetzt möchte noch folgendes erreichen:
1. Beim Start der Anwendung soll das Fenster nicht sichtbar sein, sondern es soll sich sozusagen verstecken in der SystemTray Leiste
Das würde ich mit
Code:
myWindow.setVisible(false);
2. Wenn ich das Fenster wieder sichtbar machen will mit
Code:
myWindows.setVisible(true);
Code:
Das Programmfenster wird angezeigt!
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ImageListePanel$2.actionPerformed(ImageListePanel.java:218)
at java.awt.MenuItem.processActionEvent(Unknown Source)
at java.awt.MenuItem.processEvent(Unknown Source)
at java.awt.MenuComponent.dispatchEventImpl(Unknown Source)
at java.awt.MenuComponent.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
3. Dazu möchte ich noch eine Meldung anzeigen lassen über dem Icon in der SystemTray Anzeige, doch die Meldung erscheint nicht :
Code:
trayIcon.displayMessage("Action Event","Hallo!",TrayIcon.MessageType.INFO);
Das ist der ganze Code:
Hauptfenster
Code:
public class MainWindow extends JFrame
{
static final long serialVersionUID = 1L;
public MainWindow() throws AWTException {
super("Rembo Image Lister");
// setIconImage(new ImageIcon("images/Dir.gif").getImage());
UIManager.put("ProgressBar.selectionBackground", Color.black);
ImageListePanel IL = new ImageListePanel();
SettingsPanel SP = new SettingsPanel();
IL.setSP(SP);
SP.setIL(IL);
JTabbedPane jtp = new JTabbedPane();
jtp.addTab("<html><font size=5>Image-Liste</font size></html>", IL);
jtp.addTab("<html><font size=5>Image-Verwaltung</font size></html>", SP);
add(jtp);
}
class Listener implements WindowListener
{
public void windowActivated(WindowEvent arg0)
{}
public void windowClosed(WindowEvent arg0)
{}
public void windowClosing(WindowEvent arg0)
{
int n = JOptionPane.showConfirmDialog(null,"Möchten Sie Ihre Daten noch speichern?","Alles klar?",JOptionPane.YES_NO_OPTION);
if (n == 0)//YES
{
System.out.println("speichern!");
}
if (n == 1)//NO
{
System.out.println("beenden");//return;
}
}
public void windowDeactivated(WindowEvent arg0)
{}
public void windowDeiconified(WindowEvent arg0)
{}
public void windowIconified(WindowEvent arg0)
{}
public void windowOpened(WindowEvent arg0)
{}
}
public static void main(String args[]) throws AWTException
{
try
{
Color defForeground = new Color(0,140,222);
UIManager.put("Label.foreground",defForeground);
JFrame.setDefaultLookAndFeelDecorated(true);
UIDefaults defaults = UIManager.getDefaults();
Font arial = new Font("Arial", 0, 11);
defaults.put("MenuItem.font", arial);
defaults.put("TabbedPane.font", arial);
defaults.put("TextField.font", arial);
defaults.put("Label.font", arial);
defaults.put("Button.font", arial);
defaults.put("ComboBox.font", arial);
defaults.put("Panel.font", arial);
}
catch (Exception e)
{
e.printStackTrace();
}
MainWindow myWindow = new MainWindow();
myWindow.setSize(1000,720);
myWindow.setLocationRelativeTo(null);
myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myWindow.setResizable(false);
myWindow.setVisible(false);
myWindow.addWindowListener(myWindow.new Listener());
}
}
Der Tabreiter im JFrame(Hauptfenster)
Code:
public class ImageListePanel extends JPanel implements ActionListener , ListSelectionListener
{
static final long serialVersionUID = 1L;
private SettingsPanel settings;
private JButton loadListBT = new JButton("Liste laden");
private JButton saveListBT = new JButton("Liste speichern");
private JButton addRowBT = new JButton();
private JButton delRowBT = new JButton();
private DefaultListModel listModel = new DefaultListModel();
private JList liste = new JList(listModel);
private JScrollPane listbereich = new JScrollPane(liste);
private String[] spaltennamen = {"Status" , "Gruppe" , "Programm" , "Aufgabe" , "Datenträger" };
private String[][] tabellendaten = new String [700][5];
DefaultTableModel dm;
JTable tabelle;
MainWindow myWindow;
TrayIcon trayIcon = null;
PopupMenu popup = new PopupMenu();
MenuItem anzeigenMI = new MenuItem("Programmfenster anzeigen");
MenuItem exitMI = new MenuItem("Programm beenden");
public ImageListePanel() throws AWTException
{
setLayout(null);
add(loadListBT);
add(saveListBT);
add(listbereich);
add(addRowBT);
add(delRowBT);
listbereich.setBounds(826,0,160,340);
loadListBT.setBounds(826,468,158,60);
saveListBT.setBounds(826,529,158,60);
addRowBT.setBounds(826,341,40,40);
delRowBT.setBounds(867,341,40,40);
loadListBT.setIcon(new ImageIcon("images/pasteurl.png"));
saveListBT.setIcon(new ImageIcon("images/refresh.png"));
addRowBT.setIcon(new ImageIcon("images/add.row.png"));
delRowBT.setIcon(new ImageIcon("images/delete.row.png"));
dm = new DefaultTableModel(tabellendaten,spaltennamen);
tabelle = new JTable( dm ){
/**
*
*/
private static final long serialVersionUID = 1L;
Class[] types = new Class [] {
Boolean.class, String.class, String.class, String.class, String.class
};
@SuppressWarnings("unchecked")
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex)
{
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
/*---------------------------------------------------------------------------*/
if (rowIndex % 2 == 0 && !isCellSelected(rowIndex,vColIndex))
{
c.setBackground(new Color (245,245,245));
}
else if (rowIndex % 2 == 0)
{
c.setBackground(new Color (245,245,245));
}
else
{
c.setBackground(new Color (255,255,255));
}
/*----------------------------------------------------------------------------*/
if(isRowSelected(rowIndex))
{
return c;
}
return c;
}
};
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JScrollPane scrollPane = new JScrollPane( tabelle );
add(scrollPane);
scrollPane.setBounds(0,0,826,650);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
tabelle.getColumnModel().getColumn(1).setCellRenderer(renderer);
//tabelle.setRowSelectionAllowed(true);
//tabelle.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
tabelle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);tabelle.setRowHeight(22);
tabelle.setAutoCreateRowSorter(true);
listbereich.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
listbereich.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
liste.setCellRenderer(new Renderer());
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("RHS Lehrer 112");
listModel.addElement("AEG Schüler xp");
listModel.addElement("OHG Lehrer 125");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("EKS Schüler 120");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("EDS Lehrer 120");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("EKS Schüler 120");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("EDS Lehrer 120");
listModel.addElement("AEG Schüler xp");
listModel.addElement("MPG Lehrer 125");
listModel.addElement("AEG Schüler xp");
addRowBT.addActionListener(this);
delRowBT.addActionListener(this);
liste.addListSelectionListener((ListSelectionListener) this);
setColumnWidth();
initSystemTray();
}
/*
* --------------------------- Constructor End ---------------------------------------- *
*/
public void initSystemTray() throws AWTException
{
if (SystemTray.isSupported())
{
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("refresh.png");
/*MouseListener mouseListener = new MouseListener()
{
public void mouseClicked(MouseEvent e) {
System.out.println("Tray Icon - Mouse clicked!");
}
public void mouseEntered(MouseEvent e) {
System.out.println("Tray Icon - Mouse entered!");
}
public void mouseExited(MouseEvent e) {
System.out.println("Tray Icon - Mouse exited!");
}
public void mousePressed(MouseEvent e) {
System.out.println("Tray Icon - Mouse pressed!");
}
public void mouseReleased(MouseEvent e) {
System.out.println("Tray Icon - Mouse released!");
}
};*/
// trayIcon.addMouseListener(mouseListener);
popup.add(anzeigenMI);
popup.add(exitMI);
trayIcon = new TrayIcon(image, "Tray Demo", popup);
tray.add(trayIcon);
trayIcon.setImageAutoSize(true);
ActionListener anzeigenListener = new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if (e.getSource().equals(anzeigenMI))
{
System.out.println("Das Programmfenster wird angezeigt!");
myWindow.setVisible(true);
}
}
};
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.out.println("Das Programm wird beendet!");
System.exit(0);
}
};
anzeigenMI.addActionListener(anzeigenListener);
exitMI.addActionListener(exitListener);
//trayIcon.addActionListener(actionListener);
trayIcon.displayMessage("Action Event","An Action Event Has Been Peformed!",TrayIcon.MessageType.INFO);
}
else
{
System.err.println("System tray is currently not supported.");
}
}
public void setSP(SettingsPanel object) {
this.settings = object;
}
public void valueChanged( ListSelectionEvent e )
{
if(!e.getValueIsAdjusting())
{
}
}
public void setColumnWidth() {
tabelle.getColumnModel().getColumn(0).setPreferredWidth(40);
tabelle.getColumnModel().getColumn(1).setPreferredWidth(50);
tabelle.getColumnModel().getColumn(2).setPreferredWidth(100);
tabelle.getColumnModel().getColumn(3).setPreferredWidth(500);
tabelle.getColumnModel().getColumn(4).setPreferredWidth(100);
}
public void actionPerformed(final ActionEvent e)
{
if(e.getSource().equals( addRowBT))
{
dm.insertRow(tabelle.getSelectedRow()+1, new Object[]{});
}
if(e.getSource().equals( delRowBT))
{
if(tabelle.getSelectedRow() == -1)
{
}
else
{
dm.removeRow(tabelle.getSelectedRow());
}
}
}
public void mousePressed(MouseEvent e)
{
dm.setValueAt("fff",1,1);
}
}