欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

swing自制組件(一)

系統 1809 0

swing自制組件(一)

??? 在未來的幾天里,我將持續為大家更新swing的自制組件,全部都含有運行截圖和源代碼。方便大家互相交流。

??? 今天的自制組件是一個仿JLabel組件。可是實現3種樣式的JLabel,實例化非常簡單。基本上和JLabel一樣。

?

截圖

?

?

    package com.tianlong.framework.component;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.RenderingHints;
import java.awt.Toolkit;

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

/**
 * 富標簽
 * @author 翟天龍
 * @version V1.0 2011-1-21
 */
public class RichJLabel extends JLabel
{
	/** . */
	private static final long serialVersionUID = 6726176528338618387L;

	/**
	 * 每個字之間的距離
	 */
	private int tracking;

	/**
	 * 返回一個簡單輪廓樣式的JLabel
	 * 
	 * @param text
	 *            文字
	 * @param fontSize
	 *            字體大小
	 */
	public static RichJLabel getOutlineLabel(String text, float fontSize)
	{
		return getOutlineLabel(text, 0, Color.WHITE, Color.BLACK, fontSize);
	}

	/**
	 * 返回一個簡單輪廓樣式的JLabel
	 * 
	 * @param text
	 *            文字
	 * @param tracking
	 *            文字間距
	 * @param fontColor
	 *            字的顏色
	 * @param lineColor
	 *            邊框樣色
	 * @param fontSize
	 *            字體大小
	 * @return
	 */
	public static RichJLabel getOutlineLabel(String text, int tracking, Color fontColor, Color lineColor, float fontSize)
	{
		RichJLabel label = new RichJLabel(text, tracking, fontSize);

		label.setLeftShadow(1, 1, Color.BLACK);
		label.setRightShadow(1, 1, Color.BLACK);
		label.setForeground(Color.WHITE);

		return label;
	}

	/**
	 * 返回一個陰影遮蔽樣式的JLabel
	 * 
	 * @param text
	 *            文字
	 * @param fontSize
	 *            字體大小
	 */
	public static RichJLabel getShadowLabel(String text, float fontSize)
	{
		return getShadowLabel(text, 0, Color.WHITE, Color.GRAY, Color.BLACK, fontSize);
	}

	/**
	 * 返回一個陰影遮蔽樣式的JLabel
	 * 
	 * @param text
	 *            文字
	 * @param tracking
	 *            字間距
	 * @param fontColor
	 *            字體顏色
	 * @param leftColor
	 *            陰影顏色
	 * @param rightColor
	 *            字體側邊顏色
	 * @param fontSize
	 *            字體大小
	 */
	public static RichJLabel getShadowLabel(String text, int tracking, Color fontColor, Color leftColor, Color rightColor, float fontSize)
	{
		RichJLabel label = new RichJLabel(text, tracking, fontSize);

		label.setLeftShadow(2, 2, leftColor);
		label.setRightShadow(2, 3, rightColor);
		label.setForeground(fontColor);

		return label;
	}

	/**
	 * 返回一個3D樣式的JLabel
	 * 
	 * @param text
	 *            文字
	 * @param fontSize
	 *            字體大小
	 */
	public static RichJLabel get3DLabel(String text, float fontSize)
	{
		return get3DLabel(text, 0, Color.WHITE, Color.GRAY, fontSize);
	}

	/**
	 * 返回一個陰影遮蔽樣式的JLabel
	 * 
	 * @param text
	 *            文字
	 * @param tracking
	 *            字間距
	 * @param fontColor
	 *            字體顏色
	 * @param sideColor
	 *            字體側邊顏色
	 * @param fontSize
	 *            字體大小
	 */
	public static RichJLabel get3DLabel(String text, int tracking, Color fontColor, Color sideColor, float fontSize)
	{
		RichJLabel label = new RichJLabel(text, tracking, fontSize);

		label.setLeftShadow(5, 5, sideColor);
		label.setRightShadow(-3, -3, sideColor);
		label.setForeground(fontColor);

		return label;
	}

	/**
	 * 構造方法
	 * 
	 * @param text
	 * @param tracking
	 *            每個字之間的距離
	 */
	private RichJLabel( String text, int tracking, float fontSize )
	{
		super(text);
		this.tracking = tracking;
		setFont(getFont().deriveFont(fontSize));
	}

	private int left_x, left_y, right_x, right_y;

	private Color left_color, right_color;

	public void setLeftShadow(int x, int y, Color color)
	{
		left_x = x;
		left_y = y;
		left_color = color;
	}

	public void setRightShadow(int x, int y, Color color)
	{
		right_x = x;
		right_y = y;
		right_color = color;
	}

	public Dimension getPreferredSize()
	{
		String text = getText();
		FontMetrics fm = this.getFontMetrics(getFont());

		int w = fm.stringWidth(text);
		w += (text.length() - 1) * tracking;
		w += left_x + right_x;

		int h = fm.getHeight();
		h += left_y + right_y;

		return new Dimension(w, h);
	}

	public void paintComponent(Graphics g)
	{
		// 打開文字抗鋸齒
		((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

		char[] chars = getText().toCharArray();

		FontMetrics fm = this.getFontMetrics(getFont());
		int h = fm.getAscent();
		g.setFont(getFont());

		int x = 0;

		for (int i = 0; i < chars.length; i++)
		{
			char ch = chars[i];
			int w = fm.charWidth(ch) + tracking;

			g.setColor(left_color);
			g.drawString("" + chars[i], x - left_x, h - left_y);

			g.setColor(right_color);
			g.drawString("" + chars[i], x + right_x, h + right_y);

			g.setColor(getForeground());
			g.drawString("" + chars[i], x, h);

			x += w;
		}
	}

	public static void main(String[] args)
	{
		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(3, 1));
		panel.add(RichJLabel.getOutlineLabel("顯示為簡單輪廓樣式", 60));
		panel.add(RichJLabel.get3DLabel("顯示為3D樣式", 60));
		panel.add(RichJLabel.getShadowLabel("顯示為陰影遮蔽樣式", 60));

		JDialog frame = new JDialog();
		frame.setSize(600, 400);
		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		frame.setResizable(false);
		frame.add(panel);

		frame.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - frame.getSize().width) / 2, (Toolkit.getDefaultToolkit().getScreenSize().height - frame.getSize().height) / 2);

		frame.setVisible(true);
	}
}

  

?

swing自制組件(一)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天摸天天揉天天碰天天弄 | 羞羞视频网站在线看 | 99久草| 午夜成人免费电影 | 9191av| 欧美激情高清 | 99精品国产免费观看视频 | 日本一区二区三区免费观看 | 久久久久久久综合日本亚洲 | 国产伦精品一区三区视频 | 久久久无码精品一区二区三区 | 四虎免费在线观看视频 | 狠狠的撸2015最新版狠狠的撸2015最新版 | 国产一区二区三区免费观看 | 国产激情在线观看 | 久久久久成人精品免费播放动漫 | 一级毛片免费观看不收费 | 一级片在线视频 | 国产精品免费久久久免费 | 久久道| 99久久精品免费观看国产 | 夜色成人性y | 国产欧美日韩不卡一区二区三区 | 福利片在线观看 | 91av爱爱 | 亚洲精品色综合久久 | 成人精品视频 | 国产在线观看一区二区三区 | 国产一区在线免费观看 | 精品一区二区久久久久久久网站 | 黑人xxx视频 | 中文字幕一区在线观看视频 | 天堂在线中文 | 国产成人自拍视频在线观看 | 综合久久久久综合 | 国产伦精品一区二区三区高清 | 中文字幕无线码一区二区三区 | 四虎影视国产884a精品亚洲 | 新封神榜杨戬电影免费动画在线观看国语 | 国产三级在线播放 | 亚洲精品男人天堂 |