import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; import java.awt.*; public class FlyingWindow extends JFrame implements ActionListener { JLabel information; JPanel container; Timer move; Timer wait; Timer goAway; int width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() - 105; int height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() - 140; int verticalLocation = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); public FlyingWindow(String notify) { System.out.println(Toolkit.getDefaultToolkit().getScreenSize().getHeight()); container = new JPanel(); container.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED)); information = new JLabel(notify, JLabel.CENTER); container.add(information); setUndecorated(true); setSize(100, 100); //setLocation((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(), (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight()); setLocation(width, verticalLocation); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setContentPane(container); show(); move = new Timer(30, this); wait = new Timer(5000, this); wait.setRepeats(false); goAway = new Timer(30, this); move.start(); } public void actionPerformed (ActionEvent e) { if (move.isRunning()) { if (verticalLocation > height) { verticalLocation -= 5; this.setLocation(width, verticalLocation); } else { move.stop(); wait.start(); } } else if ((! move.isRunning()) && (! goAway.isRunning())) { wait.stop(); goAway.start(); } else if (goAway.isRunning()) { if (verticalLocation < 1024) { verticalLocation += 5; this.setLocation(width, verticalLocation); } else { goAway.stop(); } } } public static void main(String[] args) { new FlyingWindow("Inbox!"); } }