Java摇摆 |创建 Toast 消息
什么是吐司消息?以及如何使用Java Swing 创建它们?
Toast Messages 是一种通过简短的弹出消息通知用户的快速方法,这些消息会持续很短的时间然后消失。
Java Swing 没有用于 toast 消息的内置类,但 toast 消息是一种流行且有效的显示自动过期消息的方法,该消息仅显示很短的时间。因此,为了实现 toast 消息,我们必须手动构建一个能够创建 toast 消息的类。
在本文中,我们将讨论如何使用Java Swing 组件在Java中手动创建 toast 消息。以下程序将创建一个持续短时间的文本 toast 消息,然后它们将消失。
有关半透明窗口和框架的更多详细信息,请阅读以下文章,这将为您提供如何实现半透明和形状窗口的想法。
Java摇摆 | Java中的半透明和形状窗口
JSwing |半透明和异形窗口
以下程序创建 toast 消息(这是一个选择性半透明的 JWindow)
// Java program that creates the toast message
//(which is a selectively translucent JWindow)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class toast extends JFrame {
//String of toast
String s;
// JWindow
JWindow w;
toast(String s, int x, int y)
{
w = new JWindow();
// make the background transparent
w.setBackground(new Color(0, 0, 0, 0));
// create a panel
JPanel p = new JPanel() {
public void paintComponent(Graphics g)
{
int wid = g.getFontMetrics().stringWidth(s);
int hei = g.getFontMetrics().getHeight();
// draw the boundary of the toast and fill it
g.setColor(Color.black);
g.fillRect(10, 10, wid + 30, hei + 10);
g.setColor(Color.black);
g.drawRect(10, 10, wid + 30, hei + 10);
// set the color of text
g.setColor(new Color(255, 255, 255, 240));
g.drawString(s, 25, 27);
int t = 250;
// draw the shadow of the toast
for (int i = 0; i < 4; i++) {
t -= 60;
g.setColor(new Color(0, 0, 0, t));
g.drawRect(10 - i, 10 - i, wid + 30 + i * 2,
hei + 10 + i * 2);
}
}
};
w.add(p);
w.setLocation(x, y);
w.setSize(300, 100);
}
// function to pop up the toast
void showtoast()
{
try {
w.setOpacity(1);
w.setVisible(true);
// wait for some time
Thread.sleep(2000);
// make the message disappear slowly
for (double d = 1.0; d > 0.2; d -= 0.1) {
Thread.sleep(100);
w.setOpacity((float)d);
}
// set the visibility to false
w.setVisible(false);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
运行上述程序的驱动程序。
// Java Program to create a driver class to run
// the toast class
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class driver extends JFrame implements ActionListener {
// create a frame
static JFrame f;
// textfield
static JTextField tf;
public static void main(String args[])
{
// create the frame
f = new JFrame("toast");
driver d = new driver();
// textfield
tf = new JTextField(16);
// button
Button b = new Button("create");
// add action listener
b.addActionListener(d);
// create a panel
JPanel p = new JPanel();
p.add(tf);
p.add(b);
// add panel
f.add(p);
// setSize
f.setSize(500, 500);
f.show();
}
// if button is pressed
public void actionPerformed(ActionEvent e)
{
// create a toast message
toast t = new toast(tf.getText(), 150, 400);
// call the method
t.showtoast();
}
}
输出 :
注意:此程序不会在在线 IDE 中运行,请使用带有最新版本Java的离线 IDE。