Here i have given the JAVA code to make a popup that happens exactly like the gmail desktop application does.It uses a JFrame to make the window.
Code:
Code:
package com.oksbwn.popUp;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.oksbwn.ErrorHandling.handleExceptions;
import resources.RscLoader;
public class popMe extends JFrame {
private static final long serialVersionUID = 1L;
public static void main(String[] args) throws Exception{
new popMe("hi", "from Bikash", "ok",15, 125);
}
public popMe(String message,String header,String image, final int time,int height)
{
Runnable r = new newThreadPop(message,header,image,time,height);
new Thread(r).start();
}
}
class newThreadPop implements Runnable {
private String message;
private String header;
private String image;
private int time;
private int height;
public newThreadPop(String message1,String header1,String image1, final int time1,int height1) {
// store parameter for later user
this.message=message1;
this.header=header1;
this.image=image1;
this.time=time1;
this.height=height1;
}
public void run() {
final Runnable runnable = (Runnable) Toolkit.getDefaultToolkit().getDesktopProperty("win.sound.exclamation");
//default
if (runnable != null)
runnable.run();
final JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setType(javax.swing.JFrame.Type.UTILITY);frame.setUndecorated(true);
frame. setBackground(new Color(Color.black.getRed(), Color.black.getGreen(),Color.black.getBlue(),0));
((JComponent)frame.getContentPane()).setBorder(
BorderFactory.createMatteBorder( 2, 2, 2, 2, Color.black ) );
frame.setSize(300,height);
frame.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
headingLabel.setForeground(Color.red);
ImageIcon headingIcon = new ImageIcon(RscLoader.getImage(image));
headingLabel .setIcon(headingIcon); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;
final JLabel lblX = new JLabel("X");
lblX.setToolTipText("Close\r\n");
lblX.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
frame.dispose();
}
@Override
public void mouseEntered(MouseEvent e) {
lblX.setForeground(new Color(255, 0, 0));
}
public void mouseExited(MouseEvent e) {
lblX.setForeground(new Color(0, 0, 0));
}
});
lblX.setSize(10,10);
lblX.setFocusable(false);
frame.add(lblX,constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel messageLabel = new JLabel(""+message);
messageLabel.setForeground(Color.blue);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setAlwaysOnTop(true);
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());
new Thread(){
@Override
public void run() {
try {
Thread.sleep(time*1000); // time after which pop up will be disappeared.
frame.dispose();
}
catch (Exception e)
{new handleExceptions(e);} };}.start();
}
}
No comments:
Post a Comment