`
yedaya
  • 浏览: 20805 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Swing 动态错误提示框

阅读更多

最近写了个swing 动态提示错误的提示框,本来想放在项目中的,被否掉了,拿出来共享一下,共同提高:

 

package errborder;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.border.AbstractBorder;

public class BlinkErrorBorder extends AbstractBorder implements ActionListener{
	private int thickness = 5;
	private float alpha = thickness;
	private Color color = Color.RED;
	private Timer timer ;
	private AlphaComposite composite;
	private final float[] blinkArray = new float[]{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
												  -1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f};
	
	public BlinkErrorBorder(Color color, int thickness){
		this.color = color;
		this.thickness = thickness;
		this.alpha = thickness;
		composite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);	
		timer = new Timer(120, this);
	}
	
	public void startBlink(){
		timer.start();
	}
	
	public void stopBlink(){
		timer.stop();
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame frame = new JFrame();
		BlinkErrorBorder err = new BlinkErrorBorder(Color.RED,3);
		JTextField text = new JTextField();
		text.setBorder(err);
		err.startBlink();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		frame.getContentPane().add(text);
		frame.setSize(400,400);
		frame.setVisible(true);
	}
	
	 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
		Graphics2D g2d = (Graphics2D) g.create();
		g2d.setColor(color);
		
		for(int i = 0; i < thickness; i++)  {
			composite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (thickness-i)/alpha);
			g2d.setComposite(composite);
			g2d.drawRoundRect(x+i, y+i, width-i-i-1, height-i-i-1, thickness, thickness);
		}		
		c.repaint();
	 }
	 public Insets getBorderInsets(Component c)       {
	        return new Insets(thickness, thickness, thickness, thickness);
	 }
	 
	 int tempI = 0;
	@Override
	public void actionPerformed(ActionEvent e) {
		alpha = alpha+blinkArray[tempI];
		tempI++;
		tempI = tempI%(blinkArray.length);		
	}

}

 

分享到:
评论

相关推荐

    java swing计算器

    自己打包写的java swing计算器,我直接生成了runnable jar,可以惊醒加减乘除混合运算,同时支持错误提示。

    java实现swing界面的通讯录程序

    点击登录按钮后,会调用登录认证方法进行验证,如果登录成功则显示一个提示消息,否则显示一个错误消息。通讯录界面包含一个通讯录列表和一个搜索框,可以通过搜索框来搜索联系人。联系人信息存储在一个列表中,并...

    javaSE代码实例

    16.4.9 防止错误的使用wait、notify、notifyAll方法 371 16.5 获取当前正在运行的线程 372 16.6 volatile关键字的含义与使用 372 16.7 小结 373 第17章 高级线程开发 374 17.1 线程池的使用 374 17.1.1...

    java开源包1

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包11

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包2

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包3

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包6

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包5

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包10

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包4

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包8

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包7

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包9

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    java开源包101

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    Java资源包01

    JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...

    Eclipse_Swt_Jface_核心应用_部分19

    9.8.1 消息提示框(MessageBox) 171 9.8.2 文件目录对话框(DirectoryDialog) 172 9.8.3 文件对话框(FileDialog) 173 9.8.4 颜色对话框(ColorDialog) 175 9.8.5 字体对话框(FontDialog) 176 9.8.6...

    超级有影响力霸气的Java面试题大全文档

     动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面...

Global site tag (gtag.js) - Google Analytics