在 Java Swing 中建立 Toast 訊息\n


提示訊息是一種無需人工干預就會自動消失的警報。藉助 JDK 7,我們可以非常輕鬆地建立類似於安卓上警報的提示訊息。以下是製作提示訊息所需的步驟。

製作一個圓角矩形形狀的邊框。向該邊框新增元件偵聽器,覆蓋它的 componentResized() 以更改該邊框的形狀。無論何時更改視窗大小時,此方法均能正確重新計算邊框的形狀。

frame.addComponentListener(new ComponentAdapter() {
   @Override
   public void componentResized(ComponentEvent e) {
      frame.setShape(new  RoundRectangle2D.Double(0,0,frame.getWidth(),
      frame.getHeight(), 20, 20));
   }
});

在顯示期間,先顯示該邊框,然後透過將不透明度降低到 0,慢慢將其隱藏起來。

for (double d = 1.0; d > 0.2; d -= 0.1) {
   Thread.sleep(100);
   setOpacity((float)d);
}

示例

請檢視下方的提示訊息視窗示例。

import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.geom.RoundRectangle2D;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Tester {
   public static void main(String[] args) {
      ToastMessage message = new ToastMessage("Welcome to TutorialsPoint.Com");
      message.display();
   }
}

class ToastMessage extends JFrame {
   public ToastMessage(final String message) {
      setUndecorated(true);
      setLayout(new GridBagLayout());
      setBackground(new Color(240,240,240,250));
      setLocationRelativeTo(null);
      setSize(300, 50);
      add(new JLabel(message));
       
      addComponentListener(new ComponentAdapter() {
         @Override
         public void componentResized(ComponentEvent e) {
            setShape(new  RoundRectangle2D.Double(0,0,getWidth(),
            getHeight(), 20, 20));                      
         }
      });        
   }

   public void display() {
      try {
         setOpacity(1);
         setVisible(true);
         Thread.sleep(2000);

         //hide the toast message in slow motion
         for (double d = 1.0; d > 0.2; d -= 0.1) {
            Thread.sleep(100);
            setOpacity((float)d);
         }

         // set the visibility to false
         setVisible(false);
      }catch (Exception e) {
         System.out.println(e.getMessage());
      }
   }
}

輸出

更新於:2020 年 6 月 19 日

1K+ 次瀏覽

Kickstart Your 職業生涯

透過完成課程獲得認證

開始入門
廣告
© . All rights reserved.