java Swing彈出式提示框
阿新 • • 發佈:2019-02-01
package com.sanguo.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JWindow; /** * * @author chen * */ public class RightCornerPopMessage extends JWindow implements Runnable, MouseListener { private static final long serialVersionUID = -3564453685861233338L; private Integer screenWidth;// 螢幕寬度 private Integer screenHeight; // 螢幕高度 private Integer windowWidth = 200; // 設定提示視窗寬度 private Integer windowHeight = 100; // 設定提示視窗高度 private Integer stayTime = 5000; // 提示框停留時間 private Integer x; // 視窗起始X座標 private Integer y; // 視窗起始Y座標 private String title = "溫馨提示"; private String message = "testone"; private JPanel mainPanel; // 主面板 private JLabel titleLabel; // 標題欄標籤 private JPanel titlePanel; // 標題欄面板 private JLabel messageLabel; // 內容標籤 private JPanel messagePanel; // 內容面板 public RightCornerPopMessage() { this.init(); Thread thread = new Thread(this); thread.start(); } private void init() { Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); screenWidth = dimension.width; screenHeight = dimension.height; x = (screenWidth - windowWidth) / 2; y = -windowHeight; this.setLocation(x, y); mainPanel = new JPanel(new BorderLayout()); titleLabel = new JLabel(title); titleLabel.setForeground(Color.WHITE); titlePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); titlePanel.setBackground(Color.RED); titlePanel.add(titleLabel); messageLabel = new JLabel(message); messagePanel = new JPanel(); messagePanel.add(messageLabel); messagePanel.setBackground(Color.YELLOW); mainPanel.add(titlePanel, BorderLayout.NORTH); mainPanel.add(messagePanel, BorderLayout.CENTER); this.setSize(windowWidth, windowHeight); this.setAlwaysOnTop(true);//置頂 this.getContentPane().add(mainPanel); this.addMouseListener(this); Toolkit.getDefaultToolkit().beep(); // 播放系統聲音,提示一下 this.setVisible(true); } public void run() { Integer delay = 10; Integer step = 1; Integer end = windowHeight; try { while (true) { step++; y++; this.setLocation(x, y); if (step > end) { Thread.sleep(stayTime); break; } Thread.sleep(delay); } } catch (InterruptedException e) { e.printStackTrace(); } step = 1; while (true) { step++; y--; this.setLocation(x, y); if (step > end) { this.dispose(); break; } try { Thread.sleep(delay); } catch (InterruptedException e) { e.printStackTrace(); } System.exit(0); } } public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } public static void main(String[] args) throws Exception { // Thread.sleep(5000); new RightCornerPopMessage(); } }