JButton变换样式
JButton变换样式
摘自:绘制JButton圆角效果 http://caleb-520.iteye.com/blog/1039493
RButton btnNewButton_1 = new RButton("New button");
btnNewButton_1.setPreferredSize(new Dimension(107, 50));
package com.example.test; import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D; import javax.swing.JButton; public class RButton extends JButton {
private static final long serialVersionUID = 39082560987930759L;
// public static final Color BUTTON_COLOR1 = new Color(255, 255, 255);
// public static final Color BUTTON_COLOR2 = new Color(255, 255, 255);
public static final Color BUTTON_COLOR1 = new Color(205, 255, 205);
public static final Color BUTTON_COLOR2 = new Color(51, 154, 47);
// public static final Color BUTTON_COLOR1 = new Color(125, 161, 237);
// public static final Color BUTTON_COLOR2 = new Color(91, 118, 173);
public static final Color BUTTON_FOREGROUND_COLOR = Color.WHITE;
private boolean hover; public RButton(String name) {
this.setText(name);
setFont(new Font("system", Font.PLAIN, 12));
setBorderPainted(false);
setForeground(BUTTON_COLOR2);
setFocusPainted(false);
setContentAreaFilled(false);
addMouseListener(new MouseAdapter() {
/* @Override
public void mouseEntered(MouseEvent e) {
// setForeground(BUTTON_FOREGROUND_COLOR);
hover = true;
repaint();
} @Override
public void mouseExited(MouseEvent e) {
// setForeground(BUTTON_COLOR2);
hover = false;
repaint();
}*/ @Override
public void mousePressed(MouseEvent e){
setForeground(BUTTON_FOREGROUND_COLOR);
hover = true;
repaint();
} @Override
public void mouseReleased(MouseEvent e){
setForeground(BUTTON_COLOR2);
hover = false;
repaint();
}
});
} @Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
int h = getHeight();
int w = getWidth();
float tran = 1F;
if (!hover) {
tran = 0.3F;
} g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint p1;
GradientPaint p2;
if (getModel().isPressed()) {
p1 = new GradientPaint(0, 0, new Color(0, 0, 0), 0, h - 1,
new Color(100, 100, 100));
p2 = new GradientPaint(0, 1, new Color(0, 0, 0, 50), 0, h - 3,
new Color(255, 255, 255, 100));
} else {
p1 = new GradientPaint(0, 0, new Color(100, 100, 100), 0, h - 1,
new Color(0, 0, 0));
p2 = new GradientPaint(0, 1, new Color(255, 255, 255, 100), 0,
h - 3, new Color(0, 0, 0, 50));
}
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
tran));
RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(0, 0, w - 1,
h - 1, 10, 10);
Shape clip = g2d.getClip();
g2d.clip(r2d);
GradientPaint gp = new GradientPaint(0.0F, 0.0F, BUTTON_COLOR1, 0.0F,
h, BUTTON_COLOR2, true);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
g2d.setClip(clip);
g2d.setPaint(p1);
g2d.drawRoundRect(0, 0, w - 1, h - 1, 10, 10);
g2d.setPaint(p2);
g2d.drawRoundRect(1, 1, w - 3, h - 3, 9, 9);
g2d.dispose();
super.paintComponent(g);
}
}
JButton变换样式的更多相关文章
- 关于java中JButton的样式设置(的一些我们应该知道的函数)(转)
1. 对JButton大小的设置 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dim ...
- jquery学习 (3)文本框获取焦点之后变换样式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- silverlight 控件自定义样式 实现方法
1:在app.xaml中加入需实现的样式,如: <Application.Resources> <Style x:Key="NodeStyle" TargetTy ...
- 3D图片变换
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- html之CSS样式学习笔记
本文内容: 字体样式 文本样式 背景样式 尺寸样式 盒子模型 边框样式 边距样式 浮动布局 定位布局 [CSS3]伸缩布局 标签显示方式 列表样式 [CSS3]过渡样式 [CSS3]变换样式之2D变形 ...
- 织梦系统dedecms实现列表页双样式,列表样式循环交替变化
有时候做列表页需要交替变换样式,那如何实现列表页双样式呢? 在DeDeCMS里面有这样一个函数,可以循环赋予html代码不同的样式,如下: [field:global function=MagicVa ...
- js仿微信语音播放
html结构如下: <div class="app-voice-you" voiceSrc="xx.mp3"> <img class=&quo ...
- Jquery导航悬停点击及首页图片切换功能
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx. ...
- indeterminateDrawable
Android原生控件只有横向进度条一种,而且没法变换样式,比如原生rom的样子很丑是吧,当伟大的产品设计要求更换前背景,甚至纵向,甚至圆弧状的,咋办,比如ok,我们开始吧: 一)变换前背景 先来看看 ...
随机推荐
- (转)SPFA算法
原文地址:http://www.cnblogs.com/scau20110726/archive/2012/11/18/2776124.html 粗略讲讲SPFA算法的原理,SPFA算法是1994年西 ...
- HDU - 5126 stars (CDQ分治)
题目链接 题目大意:一共有Q(1<=Q<=50000)组操作,操作分为两种: 1.在x,y,z处添加一颗星星 2.询问以(x1,y1,z1)与(x2,y2,z2)为左上和右下顶点的矩形之间 ...
- BerOS file system
The new operating system BerOS has a nice feature. It is possible to use any number of characters '/ ...
- 浅谈K-D Tree
初步认识\(K-D\) \(Tree\) \(K-D\) \(Tree\)是一种基于空间分割的二叉树形数据结构,一般用于高维信息检索.因为\(OI\)中很多问题都能转化为高维信息检索,所以\(K-D\ ...
- Angular5学习笔记 - 项目目录结构(二)
一.项目总体目录 README.md:项目的说明和一些常用指令说明,建议看看. e2e:看不懂暂时空着??? node_modules/:存放npm下载的组件(npm install 后自动产生,不需 ...
- Js基础之常用对象
今天来总结一下js中的常用对象: 1.string对象 常用方法: charAt():返回在指定位置的字符. charCodeAt():返回在指定的位置的字符的 Unicode 编码. concat( ...
- HTML5两个打包工具
AppCan:http://www.appcan.cn/ HBulider:http://www.dcloud.io/
- 专题练习HDU题集 图论
[图论01]最短路 Start Time : 2018-01-02 12:45:00 End Time : 2018-01-23 12:45:00 Contest Status : Runnin ...
- python的ftp上传和下载
# -*- coding: utf- -*- import os import ftplib USER_NAME = "" PASSWORD = "" SERV ...
- 数据库学习笔记(二)MySQL数据库进阶
MySQL 进阶 关于连表 左右连表: join 上下连表: union #自动去重 (当两张表里的数据,有重复的才会自动去重) union all #不去重 #上下连表示例: select sid, ...