各种效果的标签 : 标签 « 图形用户界面 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 图形用户界面 » 标签屏幕截图 
各种效果的标签
各种效果的标签
 

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;

public class JLabel2D extends JLabel {
  public static final int EFFECT_PLAIN = 0;

  public static final int EFFECT_GRADIENT = 1;

  public static final int EFFECT_IMAGE = 2;

  public static final int EFFECT_IMAGE_ANIMATION = 3;

  public static final int EFFECT_COLOR_ANIMATION = 4;

  protected int effectIndex = EFFECT_PLAIN;

  protected double shearFactor = 0.0;

  protected Color outlineColor;

  protected Stroke stroke;

  protected GradientPaint gradient;

  protected Image foregroundImage;

  protected Thread animator;

  protected boolean isRunning = false;

  protected int m_delay;

  protected int m_xShift;

  public JLabel2D() {
    super();
  }

  public JLabel2D(String text) {
    super(text);
  }

  public JLabel2D(String text, int alignment) {
    super(text, alignment);
  }

  public void setEffectIndex(int e) {
    effectIndex = e;
    repaint();
  }

  public int getEffectIndex() {
    return effectIndex;
  }

  public void setShearFactor(double s) {
    shearFactor = s;
    repaint();
  }

  public double getShearFactor() {
    return shearFactor;
  }

  public void setOutlineColor(Color c) {
    outlineColor = c;
    repaint();
  }

  public Color getOutlineColor() {
    return outlineColor;
  }

  public void setStroke(Stroke s) {
    stroke = s;
    repaint();
  }

  public Stroke getStroke() {
    return stroke;
  }

  public void setGradient(GradientPaint g) {
    gradient = g;
    repaint();
  }

  public GradientPaint getGradient() {
    return gradient;
  }

  public void setForegroundImage(Image img) {
    foregroundImage = img;
    repaint();
  }

  public Image getForegroundImage() {
    return foregroundImage;
  }

  public void startAnimation(int delay) {
    if (animator != null)
      return;
    m_delay = delay;
    m_xShift = 0;
    isRunning = true;
    animator = new Thread() {
      double arg = 0;
      public void run() {
        while (isRunning) {
          if (effectIndex == EFFECT_IMAGE_ANIMATION)
            m_xShift += 10;
          else if (effectIndex == EFFECT_COLOR_ANIMATION
              && gradient != null) {
            arg += Math.PI / 10;
            double cos = Math.cos(arg);
            double f1 = (+ cos2;
            double f2 = (- cos2;
            arg = arg % (Math.PI * 2);

            Color c1 = gradient.getColor1();
            Color c2 = gradient.getColor2();
            int r = (int) (c1.getRed() * f1 + c2.getRed() * f2);
            r = Math.min(Math.max(r, 0)255);
            int g = (int) (c1.getGreen() * f1 + c2.getGreen() * f2);
            g = Math.min(Math.max(g, 0)255);
            int b = (int) (c1.getBlue() * f1 + c2.getBlue() * f2);
            b = Math.min(Math.max(b, 0)255);
            setForeground(new Color(r, g, b));
          }
          repaint();
          try {
            sleep(m_delay);
          catch (InterruptedException ex) {
            break;
          }
        }
      }
    };
    animator.start();
  }

  public void stopAnimation() {
    isRunning = false;
    animator = null;
  }

  public void paintComponent(Graphics g) {
    Dimension d = getSize();
    Insets ins = getInsets();
    int x = ins.left;
    int y = ins.top;
    int w = d.width - ins.left - ins.right;
    int h = d.height - ins.top - ins.bottom;

    if (isOpaque()) {
      g.setColor(getBackground());
      g.fillRect(00, d.width, d.height);
    }
    paintBorder(g);

    Graphics2D g2 = (Graphics2Dg;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setRenderingHint(RenderingHints.KEY_RENDERING,
        RenderingHints.VALUE_RENDER_QUALITY);

    FontRenderContext frc = g2.getFontRenderContext();
    TextLayout tl = new TextLayout(getText(), getFont(), frc);

    AffineTransform shear = AffineTransform.getShearInstance(shearFactor,
        0.0);
    Shape src = tl.getOutline(shear);
    Rectangle rText = src.getBounds();

    float xText = x - rText.x;
    switch (getHorizontalAlignment()) {
    case CENTER:
      xText = x + (w - rText.width2;
      break;
    case RIGHT:
      xText = x + (w - rText.width);
      break;
    }
    float yText = y + h / + tl.getAscent() 4;

    AffineTransform shift = AffineTransform.getTranslateInstance(xText,
        yText);
    Shape shp = shift.createTransformedShape(src);

    if (outlineColor != null) {
      g2.setColor(outlineColor);
      if (stroke != null)
        g2.setStroke(stroke);
      g2.draw(shp);
    }

    switch (effectIndex) {
    case EFFECT_GRADIENT:
      if (gradient == null)
        break;
      g2.setPaint(gradient);
      g2.fill(shp);
      break;

    case EFFECT_IMAGE:
      fillByImage(g2, shp, 0);
      break;

    case EFFECT_COLOR_ANIMATION:
      g2.setColor(getForeground());
      g2.fill(shp);
      break;

    case EFFECT_IMAGE_ANIMATION:
      if (foregroundImage == null)
        break;
      int wImg = foregroundImage.getWidth(this);
      if (m_xShift > wImg)
        m_xShift = 0;
      fillByImage(g2, shp, m_xShift - wImg);
      break;

    default:
      g2.setColor(getForeground());
      g2.fill(shp);
      break;
    }
  }

  protected void fillByImage(Graphics2D g2, Shape shape, int xOffset) {
    if (foregroundImage == null)
      return;
    int wImg = foregroundImage.getWidth(this);
    int hImg = foregroundImage.getHeight(this);
    if (wImg <= || hImg <= 0)
      return;
    g2.setClip(shape);
    Rectangle bounds = shape.getBounds();
    for (int xx = bounds.x + xOffset; xx < bounds.x + bounds.width; xx += wImg)
      for (int yy = bounds.y; yy < bounds.y + bounds.height; yy += hImg)
        g2.drawImage(foregroundImage, xx, yy, this);
  }
  public static void main(String argv[]) {
    JFrame f = new JFrame("2D Labels");
    f.setSize(600300);
    f.getContentPane().setLayout(new GridLayout(6155));
    f.getContentPane().setBackground(Color.white);
    Font bigFont = new Font("Helvetica", Font.BOLD, 24);

    JLabel2D lbl = new JLabel2D("Java Source and Support With Outline",
        JLabel.CENTER);
    lbl.setFont(bigFont);
    lbl.setForeground(Color.blue);
    lbl.setBorder(new LineBorder(Color.black));
    lbl.setBackground(Color.cyan);
    lbl.setOutlineColor(Color.yellow);
    lbl.setStroke(new BasicStroke(5f));
    lbl.setOpaque(true);
    lbl.setShearFactor(0.3);
    f.getContentPane().add(lbl);

    lbl = new JLabel2D("Java Source and Support With Color Gradient", JLabel.CENTER);
    lbl.setFont(bigFont);
    lbl.setOutlineColor(Color.black);
    lbl.setEffectIndex(JLabel2D.EFFECT_GRADIENT);
    GradientPaint gp = new GradientPaint(00, Color.red, 10050,
        Color.blue, true);
    lbl.setGradient(gp);
    f.getContentPane().add(lbl);

    lbl = new JLabel2D("Java Source and Support Filled With Image", JLabel.CENTER);
    lbl.setFont(bigFont);
    lbl.setEffectIndex(JLabel2D.EFFECT_IMAGE);
    ImageIcon icon = new ImageIcon("mars.gif");
    lbl.setForegroundImage(icon.getImage());
    lbl.setOutlineColor(Color.red);
    f.getContentPane().add(lbl);

    lbl = new JLabel2D("Java Source and Support With Image Animation", JLabel.CENTER);
    lbl.setFont(bigFont);
    lbl.setEffectIndex(JLabel2D.EFFECT_IMAGE_ANIMATION);
    icon = new ImageIcon("ocean.gif");
    lbl.setForegroundImage(icon.getImage());
    lbl.setOutlineColor(Color.black);
    lbl.startAnimation(400);
    f.getContentPane().add(lbl);

    lbl = new JLabel2D("Java Source and Support With Color Animation", JLabel.CENTER);
    lbl.setFont(bigFont);
    lbl.setEffectIndex(JLabel2D.EFFECT_COLOR_ANIMATION);
    lbl.setGradient(gp);
    lbl.setOutlineColor(Color.black);
    lbl.startAnimation(400);
    f.getContentPane().add(lbl);

    JLabel lbl1 = new JLabel("Plain Java Source and Support For Comparison", JLabel.CENTER);
    lbl1.setFont(bigFont);
    lbl1.setForeground(Color.black);
    f.getContentPane().add(lbl1);

    WindowListener wndCloser = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    };
    f.addWindowListener(wndCloser);

    f.setVisible(true);

  }

}


           
         
  
Related examples in the same category
1. 创建一个JLabel,图片图标
2. 创建JLabel组件
3. 创建一个JLabel组件
4. 添加HTML文本的界面组件添加HTML文本的界面组件
5. Shows how displayed Mnemonic and labelFor properties work togetherShows how displayed Mnemonic and labelFor properties work together
6. 一个简单的JLabel一个简单的JLabel
7. JLabel使用内嵌的HTML格式的文本JLabel使用内嵌的HTML格式的文本
8. 变化的文字和图标标签变化的文字和图标标签
9. 在JLabels示范文本对齐在JLabels示范文本对齐
10. Label with Image Label with Image
11. 标签的HTML示例标签的HTML示例
12. 标签文字的位置标签文字的位置
13. LabelFor演示LabelFor演示
14. 标签与图示标签与图示
15. 标签样本标签样本
16. 标签演示标签演示
17. 标记对齐标记对齐
18. HTML标签HTML标签
19. 标签的背景,图标,赞同标签的背景,图标,赞同
20. 滚动标签滚动标签
21. 拖动图像滚动标签拖动图像滚动标签
22. 动画标签
23. Label for Label for
24. LabelFocusSample: setLabelForLabelFocusSample: setLabelFor
25. 添加拖放支持到一个JLabel组件
26. Setting the Focus of a JTextField Component Using a JLabel Component
27. 添加一个图标到JLabel组件
28. 文字是横向和纵向居中
29. 文字有对齐,垂直居中
30. 文字左对齐和顶端对齐
31. 文字右对齐和顶端对齐
32. 文字是左对齐和底部对齐
33. 文字有对齐和底部对齐
34. JLabel与多行
35. JLabel is for displaying text, images or both. It does not react to input events.
36. JSlider lets the user graphically select a value by sliding a knob within a bounded interval.
37. JLabel与内衬边界
38. 标签ImageIcon (图标)
39. 多标签( HTML )
40. 禁用标签
41. 设置尺寸
42. 水平对齐:中心
43. 垂直对齐:中心
44. 水平对齐:左
45. 垂直对齐:置顶
46. 水平对齐:右键
47. 垂直对齐:自下而上
48. 协理JLabel组件与JTextField
49. 一个标签,使用内嵌的HTML格式的文本
50. 标签,没有迹象表明它已被点击
51. 文本对齐在JLabels
52. 在纵向和横向方向使用滚动条
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.