JButton变换样式

摘自:绘制JButton圆角效果 http://caleb-520.iteye.com/blog/1039493

  1. RButton btnNewButton_1 = new RButton("New button");
  2. btnNewButton_1.setPreferredSize(new Dimension(107, 50));
  1. package com.example.test;
  2.  
  3. import java.awt.AlphaComposite;
  4. import java.awt.Color;
  5. import java.awt.Font;
  6. import java.awt.GradientPaint;
  7. import java.awt.Graphics;
  8. import java.awt.Graphics2D;
  9. import java.awt.RenderingHints;
  10. import java.awt.Shape;
  11. import java.awt.event.MouseAdapter;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.geom.RoundRectangle2D;
  14.  
  15. import javax.swing.JButton;
  16.  
  17. public class RButton extends JButton {
  18. private static final long serialVersionUID = 39082560987930759L;
  19. // public static final Color BUTTON_COLOR1 = new Color(255, 255, 255);
  20. // public static final Color BUTTON_COLOR2 = new Color(255, 255, 255);
  21. public static final Color BUTTON_COLOR1 = new Color(205, 255, 205);
  22. public static final Color BUTTON_COLOR2 = new Color(51, 154, 47);
  23. // public static final Color BUTTON_COLOR1 = new Color(125, 161, 237);
  24. // public static final Color BUTTON_COLOR2 = new Color(91, 118, 173);
  25. public static final Color BUTTON_FOREGROUND_COLOR = Color.WHITE;
  26. private boolean hover;
  27.  
  28. public RButton(String name) {
  29. this.setText(name);
  30. setFont(new Font("system", Font.PLAIN, 12));
  31. setBorderPainted(false);
  32. setForeground(BUTTON_COLOR2);
  33. setFocusPainted(false);
  34. setContentAreaFilled(false);
  35. addMouseListener(new MouseAdapter() {
  36. /* @Override
  37. public void mouseEntered(MouseEvent e) {
  38. // setForeground(BUTTON_FOREGROUND_COLOR);
  39. hover = true;
  40. repaint();
  41. }
  42.  
  43. @Override
  44. public void mouseExited(MouseEvent e) {
  45. // setForeground(BUTTON_COLOR2);
  46. hover = false;
  47. repaint();
  48. }*/
  49.  
  50. @Override
  51. public void mousePressed(MouseEvent e){
  52. setForeground(BUTTON_FOREGROUND_COLOR);
  53. hover = true;
  54. repaint();
  55. }
  56.  
  57. @Override
  58. public void mouseReleased(MouseEvent e){
  59. setForeground(BUTTON_COLOR2);
  60. hover = false;
  61. repaint();
  62. }
  63. });
  64. }
  65.  
  66. @Override
  67. protected void paintComponent(Graphics g) {
  68. Graphics2D g2d = (Graphics2D) g.create();
  69. int h = getHeight();
  70. int w = getWidth();
  71. float tran = 1F;
  72. if (!hover) {
  73. tran = 0.3F;
  74. }
  75.  
  76. g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  77. RenderingHints.VALUE_ANTIALIAS_ON);
  78. GradientPaint p1;
  79. GradientPaint p2;
  80. if (getModel().isPressed()) {
  81. p1 = new GradientPaint(0, 0, new Color(0, 0, 0), 0, h - 1,
  82. new Color(100, 100, 100));
  83. p2 = new GradientPaint(0, 1, new Color(0, 0, 0, 50), 0, h - 3,
  84. new Color(255, 255, 255, 100));
  85. } else {
  86. p1 = new GradientPaint(0, 0, new Color(100, 100, 100), 0, h - 1,
  87. new Color(0, 0, 0));
  88. p2 = new GradientPaint(0, 1, new Color(255, 255, 255, 100), 0,
  89. h - 3, new Color(0, 0, 0, 50));
  90. }
  91. g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
  92. tran));
  93. RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(0, 0, w - 1,
  94. h - 1, 10, 10);
  95. Shape clip = g2d.getClip();
  96. g2d.clip(r2d);
  97. GradientPaint gp = new GradientPaint(0.0F, 0.0F, BUTTON_COLOR1, 0.0F,
  98. h, BUTTON_COLOR2, true);
  99. g2d.setPaint(gp);
  100. g2d.fillRect(0, 0, w, h);
  101. g2d.setClip(clip);
  102. g2d.setPaint(p1);
  103. g2d.drawRoundRect(0, 0, w - 1, h - 1, 10, 10);
  104. g2d.setPaint(p2);
  105. g2d.drawRoundRect(1, 1, w - 3, h - 3, 9, 9);
  106. g2d.dispose();
  107. super.paintComponent(g);
  108. }
  109. }

JButton变换样式的更多相关文章

  1. 关于java中JButton的样式设置(的一些我们应该知道的函数)(转)

    1. 对JButton大小的设置 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dim ...

  2. jquery学习 (3)文本框获取焦点之后变换样式

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. silverlight 控件自定义样式 实现方法

    1:在app.xaml中加入需实现的样式,如: <Application.Resources> <Style x:Key="NodeStyle" TargetTy ...

  4. 3D图片变换

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  5. html之CSS样式学习笔记

    本文内容: 字体样式 文本样式 背景样式 尺寸样式 盒子模型 边框样式 边距样式 浮动布局 定位布局 [CSS3]伸缩布局 标签显示方式 列表样式 [CSS3]过渡样式 [CSS3]变换样式之2D变形 ...

  6. 织梦系统dedecms实现列表页双样式,列表样式循环交替变化

    有时候做列表页需要交替变换样式,那如何实现列表页双样式呢? 在DeDeCMS里面有这样一个函数,可以循环赋予html代码不同的样式,如下: [field:global function=MagicVa ...

  7. js仿微信语音播放

    html结构如下: <div class="app-voice-you" voiceSrc="xx.mp3"> <img class=&quo ...

  8. Jquery导航悬停点击及首页图片切换功能

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx. ...

  9. indeterminateDrawable

    Android原生控件只有横向进度条一种,而且没法变换样式,比如原生rom的样子很丑是吧,当伟大的产品设计要求更换前背景,甚至纵向,甚至圆弧状的,咋办,比如ok,我们开始吧: 一)变换前背景 先来看看 ...

随机推荐

  1. BEC listen and translation exercise 8

    The double-decker plane that can carry over 550 passengers dwarfs all other commercial jets. In just ...

  2. bzoj 4299 Codechef FRBSUM

    定义一个集合的神秘数为不能表示成这个集合的某个子集和的最小正整数,给一个数列,多次求区间神秘数 $n \leq 100000$ sol: 考虑这个神秘数的性质,可以发现,如果神秘数是 $x$,那么 $ ...

  3. LeetCode Judge Route Circle

    原题链接在这里:https://leetcode.com/problems/judge-route-circle/description/ 题目: Initially, there is a Robo ...

  4. LeetCode 480. Sliding Window Median

    原题链接在这里:https://leetcode.com/problems/sliding-window-median/?tab=Description 题目: Median is the middl ...

  5. 利用MsChart控件绘制多曲线图表

    在.Net4.0框架中,微软已经将Mschart控件集成了进来,以前一直在web下面用过,原来winform下的Mschart控件更加简单更加方便,今天我们用mschart绘制一个多曲线图,发现MsC ...

  6. 微信无法跳转appstore总结--应用宝微下载申请

    以前是有方法,可以实现微信下跳转appstore的. 大概就是把url改为:http://mp.weixin.qq.com/mp/redirect?url="跳转url"(可编码也 ...

  7. linux 定时备份mysql

    定时备份:1.创建备份文件存放目录2.创建备份脚本backup.sh #!/bin/bash DBUser=db_backDBPasswd=passwordDBName=db_nameSERVER=l ...

  8. MSSQL Join的使用

    假设我们有下面两张表.表A在左边,表B在右边.我们给它们各四条记录. id name id name -- ---- -- ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pi ...

  9. Mybatis-Spring包学习

    MyBatis-Spring包用来将MyBatis无缝整合到Spring中.使用这个类库中的类, Spring将会加载必要的MyBatis工厂类和Session类. 这个类库也提供一个简单的方式来注入 ...

  10. bash 中的行处理命令 awk

    转自:http://blog.chinaunix.net/uid-23302288-id-3785105.html