用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

表格界面

2017-12-26 作者:柯侧耳倾听者举报

[java]代码库

import java.beans.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.plaf.LayerUI;
import java.awt.geom.Point2D;
class FirstLayerUI extends LayerUI<JComponent>
{
	public void paint(Graphics g, JComponent c)
	{
		super.paint(g, c);
		Graphics2D g2 = (Graphics2D) g.create();
		g2.setComposite(AlphaComposite.getInstance(
			AlphaComposite.SRC_OVER, .5f));
		g2.setPaint(new GradientPaint(0 , 0 , Color.RED
			, 0 , c.getHeight() , Color.BLUE));
		g2.fillRect(0, 0, c.getWidth(), c.getHeight());    
		g2.dispose();
	}
}
class BlurLayerUI extends LayerUI<JComponent>
{
	private BufferedImage screenBlurImage;
	private BufferedImageOp operation;
	public BlurLayerUI()
	{
		float ninth = 1.0f / 9.0f;
		float[] blurKernel = {
			ninth, ninth, ninth,
			ninth, ninth, ninth,
			ninth, ninth, ninth
		};
		operation = new ConvolveOp(
			new Kernel(3, 3, blurKernel),
			ConvolveOp.EDGE_NO_OP, null);
	}
	public void paint(Graphics g, JComponent c)
	{
		int w = c.getWidth();
		int h = c.getHeight();
		if (w == 0 || h == 0)
			return;
		if (screenBlurImage == null
			|| screenBlurImage.getWidth() != w
			|| screenBlurImage.getHeight() != h)
		{
			screenBlurImage = new BufferedImage(w
				, h , BufferedImage.TYPE_INT_RGB);
		}
		Graphics2D ig2 = screenBlurImage.createGraphics();
		ig2.setClip(g.getClip());
		super.paint(ig2, c);
		ig2.dispose();
		Graphics2D g2 = (Graphics2D)g;
		g2.drawImage(screenBlurImage, operation, 0, 0);
	}
}
class SpotlightLayerUI extends LayerUI<JComponent>
{
	private boolean active;
	private int cx, cy;

	public void installUI(JComponent c)
	{
		super.installUI(c);
		JLayer layer = (JLayer)c;
		layer.setLayerEventMask(AWTEvent.MOUSE_EVENT_MASK
			| AWTEvent.MOUSE_MOTION_EVENT_MASK);
	}
	public void uninstallUI(JComponent c)
	{
		JLayer layer = (JLayer)c;
		layer.setLayerEventMask(0);
		super.uninstallUI(c);
	}
	public void paint(Graphics g, JComponent c)
	{
		Graphics2D g2 = (Graphics2D)g.create();
		super.paint (g2, c);
		if (active)
		{
			Point2D center = new Point2D.Float(cx, cy);
			float radius = 72;
			float[] dist = {0.0f, 1.0f};
			Color[] colors = {Color.YELLOW , Color.BLACK};
			RadialGradientPaint p = new RadialGradientPaint(center
				, radius , dist , colors);
			g2.setPaint(p);
			g2.setComposite(AlphaComposite.getInstance(
				AlphaComposite.SRC_OVER, .6f));
			g2.fillRect(0, 0, c.getWidth(), c.getHeight());
		}
		g2.dispose();
	}
	public void processMouseEvent(MouseEvent e, JLayer layer)
	{
		if (e.getID() == MouseEvent.MOUSE_ENTERED)
			active = true;
		if (e.getID() == MouseEvent.MOUSE_EXITED)
			active = false;
		layer.repaint();
	}
	public void processMouseMotionEvent(MouseEvent e, JLayer layer)
	{
		Point p = SwingUtilities.convertPoint(
			e.getComponent(), e.getPoint(), layer);
		cx = p.x;
		cy = p.y;
		layer.repaint();
	}
}
public class JLayerTest
{
	public void init()
	{
		JFrame f = new JFrame("JLayer测试");
		JPanel p = new JPanel();
		ButtonGroup group = new ButtonGroup();
		JRadioButton radioButton;
		p.add(radioButton = new JRadioButton("网购购买", true));
		group.add(radioButton);
		p.add(radioButton = new JRadioButton("书店购买"));
		group.add(radioButton);
		p.add(radioButton = new JRadioButton("图书馆借阅"));
		group.add(radioButton);
		p.add(new JCheckBox("疯狂Java讲义"));
		p.add(new JCheckBox("疯狂Android讲义"));
		p.add(new JCheckBox("疯狂Ajax讲义"));
		p.add(new JCheckBox("轻量级Java EE企业应用"));
		JButton orderButton = new JButton("投票");
		p.add(orderButton);
		LayerUI<JComponent> layerUI = new SpotlightLayerUI();     
		JLayer<JComponent> layer = new JLayer<JComponent>(p, layerUI);
		f.add(layer);
		f.setSize(300, 170);
		f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		f.setVisible (true);
	}
	public static void main(String[] args)
	{
		new JLayerTest().init();
	}
}


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。