展开全部

一般来说,对于swing组件,如果要定制其图形,先把Graphics的对象转型成62616964757a686964616fe4b893e5b19e31333238656639为Graphics2D的对象也是一个常用的技巧,以便利用Graphics2D中引入的一些方法。当然,要实现透明度的逐渐改变,还需要一个线程不断的对透明度进行设置,并且更新画面。

下面是例子.自己看.

import java.awt.AlphaComposite;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.image.BufferedImage;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

import org.jdesktop.animation.timing.Animator;

import org.jdesktop.animation.timing.Animator.Direction;

import org.jdesktop.animation.timing.Animator.RepeatBehavior;

import org.jdesktop.animation.timing.TimingTarget;

public class FadingButtonTF extends JButton

implements ActionListener, TimingTarget {

float alpha = 1.0f;

Animator animator;

int animationDuration = 2000;

BufferedImage buttonImage = null;

public FadingButtonTF(String label) {

super(label);

setOpaque(false);

animator = new Animator(animationDuration/2, Animator.INFINITE,

RepeatBehavior.REVERSE, this);

animator.setStartFraction(1.0f);

animator.setStartDirection(Direction.BACKWARD);

addActionListener(this);

}

public void paint(Graphics g) {

if (buttonImage == null || buttonImage.getWidth() != getWidth() ||

buttonImage.getHeight() != getHeight()) {

buttonImage = getGraphicsConfiguration().

createCompatibleImage(getWidth(), getHeight());

}

Graphics gButton = buttonImage.getGraphics();

gButton.setClip(g.getClip());

super.paint(gButton);

Graphics2D g2d = (Graphics2D)g;

AlphaComposite newComposite =

AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);

g2d.setComposite(newComposite);

g2d.drawImage(buttonImage, 0, 0, null);

}

public void actionPerformed(ActionEvent ae) {

if (!animator.isRunning()) {

this.setText("Stop Animation");

animator.start();

} else {

animator.stop();

this.setText("Start Animation");

// reset alpha to opaque

alpha = 1.0f;

}

}

public void begin() {}

public void end() {}

public void repeat() {}

public void timingEvent(float fraction) {

alpha = fraction;

repaint();

}

private static void createAndShowGUI() {

JFrame f = new JFrame("Fading Button TF");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(300, 300);

JPanel checkerboard = new Checkerboard();

checkerboard.add(new FadingButtonTF("Start Animation"));

f.add(checkerboard);

f.setVisible(true);

}

public static void main(String args[]) {

Runnable doCreateAndShowGUI = new Runnable() {

public void run() {

createAndShowGUI();

}

};

SwingUtilities.invokeLater(doCreateAndShowGUI);

}

private static class Checkerboard extends JPanel {

private static final int DIVISIONS = 10;

static final int CHECKER_SIZE = 60;

public void paintComponent(Graphics g) {

g.setColor(Color.white);

g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(Color.BLACK);

for (int stripeX = 0; stripeX < getWidth(); stripeX += CHECKER_SIZE) {

for (int y = 0, row = 0; y < getHeight(); y += CHECKER_SIZE/2, ++row) {

int x = (row % 2 == 0) ? stripeX : (stripeX + CHECKER_SIZE/2);

g.fillRect(x, y, CHECKER_SIZE/2, CHECKER_SIZE/2);

}

}

}

}

本回答由网友推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java窗口淡出_java淡入淡出式显示gui相关推荐

  1. css淡入淡出_CSS淡入淡出

    css淡入淡出 Web developers have been using fade ins and fade outs (basic opacity animation) on their web ...

  2. java窗口代码_Java系列教程day01——java的搭建环境

    day01--搭建环境变量&HelloWorld程序 1.注意听课,不要溜号,不要睡觉,不要游戏. 2.我的联系方式: QQ:79539705 3.整理笔记.绘制思维导图.完成作业.. 一.J ...

  3. java 窗口开始_Java窗口(JFrame)从零开始(3)——绝对布局

    Swing中的绝对布局 package jframe; import java.awt.Button; import java.awt.Container; import javax.swing.*; ...

  4. java jtextarea 滚动条_java 在JTextArea中显示 滚动条

    我的代码为什么不显示垂直滚动条是那里错了么如果有错求高手修改importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava ...

  5. java excel插入列_Java 插入、隐藏/显示、删除Excel行或列

    概述 操作Excel工作表时,对表格中的行或列数据可执行,包括插入.隐藏.显示.删除等在内的多种操作需求,本文将通过Java代码示例演示每种操作的具体实现方法.文中方法使用了Java Excel类库( ...

  6. java 窗口文本_Java Frame 窗口读取 文本文件代码

    /** * 读取文本文件 * JavaAlpha */ import java.io.*; import java.awt.*; import java.awt.event.*; public cla ...

  7. java 窗口线程_Java 窗体与线程问题

    展开全部 主窗口线程不能阻塞,也就是说应该处于空闲状态. 如果阻62616964757a686964616fe4b893e5b19e31333335333638塞,窗口将不能响应用户事件. 程序应该类 ...

  8. java窗口聊天_java聊天窗口的实现

    编写一数据报通信程序,实现简单的聊天功能. "聊天内容"和"输入文本"分别为当前聊天的历史信息和当前要传送出去的聊天文本."确定".&quo ...

  9. java buffer 记事本_Java实现记事本|IO流/GUI

    Java实现记事本 题目 利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上: 允许对文字内容进行编辑,并可以保存到文件. 代码 class notPadcontain ...

  10. jQuery动画(显示隐藏,淡入淡出,滑动)

    目录 分类 基本动画函数 显示元素 交替显示隐藏 滑动效果 向上收缩效果 向下展开效果 交替伸缩样式 淡入淡出效果 淡入效果 淡出效果 自定义不透明度 jQuery的动画函数 分类 基本动画函数:既有 ...

最新文章

  1. 软件测试工程师面试英语
  2. 什么是分布式系统,如何学习分布式系统(转)
  3. UPnP协议编程实践
  4. inline函数使用容易导致出错的问题
  5. soundbar未来发展_智能电视时代 Soundbar未来发展之路
  6. 我来了,我看见了,我征服了
  7. java visualvm远程监控_如何监控和诊断堆外内存使用
  8. 运用ffmpeg SDK解264码流(来源FFmpeg工程组)
  9. concurrentbag 删除指定元素_Python实现列表索引批量删除的5种方法_python
  10. 永远不要低估“价值互联网”!| 技术头条
  11. 软件测试——集成测试篇
  12. 深度学习-23:矩阵理论(L0/L1/L2范数)
  13. OMNeT 例程 Tictoc15 和 Tictoc16 矢量和标量统计详解
  14. 左岸语不惊人死不休系列摘录
  15. 首个智能制造领域5G专网建成:广东联通+格力+华为共同打造!
  16. stl文件用proe怎么打开_3dmax怎么导入stl文件?如何将proe的文件导入3dmax进行渲染?...
  17. 炫酷超拽!推荐一款Vue开发的OA系统,功能还不错哟!!!
  18. win7计算机组策略打不开,Win7系统组策略打不开怎么办?组策略被锁住了怎么处理?...
  19. 2018全新升级旗舰版vbox硬件级虚拟机系统 vm去虚拟化修改信息工具 批量启动克隆 virtualbox
  20. 电脑不能上网页,但是能聊QQ,是怎么回事?

热门文章

  1. 【第1章】初识MySQL
  2. 虚拟机克隆MAC地址变更后的网络配置
  3. 高并发 问题怎么解决
  4. 四大猛壳之一的VMProtect轻松保护你的程序
  5. java基础-对象-练习集锦
  6. Tensorflow自编码器及多层感知机
  7. Entity framework 配置文件,实现类,测试类
  8. iOS-集成支付宝支付、微信支付简单总结
  9. oracle 方案概念
  10. System.Windows.Forms.TreeView