package buttonDemo;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
public class CrystalButton extends JButton {
private String text;
private float alpha = 1f;
private boolean isMouseEntered = false;
private boolean isPressed = false;
private Color COLOR_DARK_PURPLE = new Color(161, 123, 192);
private Color COLOR_LIGHT_PURPLE = new Color(255, 228, 255);
private Color COLOR_TEXT_DARKBLUE = new Color(90, 121,255);
public CrystalButton(String buttonText) {
// super(buttonText);
this.text = buttonText;
initStyle();
//添加鼠标监听
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e){
System.out.println("mouse click");
}
@Override
public void mouseEntered(MouseEvent e) {
//当鼠标进入时,鼠标进入状态改为TRUE,并重绘按钮
isMouseEntered = true;
System.out.println("mouse entered");
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
isMouseEntered = false;
System.out.println("mouse exited");
repaint();
}
@Override
public void mousePressed(MouseEvent evt)
{
System.out.println("mouse press");
isPressed = true;
repaint();
}
@Override
public void mouseReleased(MouseEvent evt)
{
System.out.println("mouse release");
isPressed = false;
repaint();
}
});
}
private void initStyle() {
setOpaque(false);
setBorder(BorderFactory.createLineBorder(COLOR_DARK_PURPLE, 1));
setBorderPainted(true);
setFocusable(false);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
AlphaComposite composite = AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, alpha);
g2.setComposite(composite);
drawButtonBackground(g2, this);
}
private void drawButtonBackground(Graphics2D g2, JButton bt) {
if(isMouseEntered){
if(isPressed){
g2.setPaint(new GradientPaint(0,0, Color.WHITE, 0, bt.getHeight()*2/5, Color.WHITE));
g2.fillRect(0, 0, bt.getWidth(), bt.getHeight()*2/5);
g2.setPaint(new GradientPaint(0,bt.getHeight()*2/5, COLOR_LIGHT_PURPLE, 0, bt.getHeight(), Color.WHITE));
g2.fillRect(0, bt.getHeight()*2/5, bt.getWidth(), bt.getHeight()*3/5);
}else{
g2.setPaint(new GradientPaint(0,0, Color.WHITE, 0, bt.getHeight(), COLOR_LIGHT_PURPLE));
g2.fillRect(0, 0, bt.getWidth(), bt.getHeight());
}
}else{
g2.setPaint(new GradientPaint(0,0, COLOR_LIGHT_PURPLE, 0, bt.getHeight(), COLOR_DARK_PURPLE));
g2.fillRect(0, 0, bt.getWidth(), bt.getHeight());
}
g2.setColor(COLOR_TEXT_DARKBLUE);
g2.drawString(text,bt.getWidth()/4, this.getHeight()*3/5);
g2.setClip(0,0,1000, 1000);
g2.setPaint(new GradientPaint(0,0, COLOR_DARK_PURPLE,0 , bt.getHeight(), COLOR_DARK_PURPLE));
g2.fillPolygon(new int[] {0,0,bt.getHeight()/2},new int[] {0,bt.getHeight(),bt.getHeight()/2},3);
g2.setPaint(new GradientPaint(bt.getWidth(), bt.getHeight(), COLOR_DARK_PURPLE, bt.getWidth()-bt.getHeight()/2, bt.getHeight(), COLOR_DARK_PURPLE));
g2.fillPolygon(new int[] {bt.getWidth(),bt.getWidth(),bt.getWidth()-bt.getHeight()/2},new int[] {0,bt.getHeight(),bt.getHeight()/2},3);
}
}
相关推荐
主要介绍了Java Swing JButton按钮的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java swing JButton 圆角按钮 带变色(有注释,简单易懂适用于初学者 程序可直接运行)
java 在JButton上设置快捷键 java 在JButton上设置快捷键 java 在JButton上设置快捷键
Java swing 中JButton的使用 Java swing 中JButton的使用
java按钮jbutton透明设置 不要用 setOpaque(false)的方法
JButton 美化,主要实现圆角矩形,根据鼠标动作变化,主要代码: Graphics2D g2d = (Graphics2D) g; g2d.setColor(Color.GREEN); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints....
swing 中JTABLE中添加控件的例子 可以引申出添加很多控件
swing 鼠标事件 loading效果
JButton是Swing库中的一个组件,用于创建可点击的按钮。你可以使用JButton来触发操作或执行特定任务。
swing入门必看示例( oracle 官方swingset3示例) swingset3-oracle 运行包, 双击swingset3.bat 运行或者在jar包右键选择java运行. swingset3-src 源码包,感兴趣可以查看示例代码. 包含swing入门组件完整示例, 几乎...
在swing的组件,如JLabel,JButton等,设置背景图片自适应自检的大小。
基于basicUI的JButton重写,下载后直接使用,直接new就可以了…………………………………………………………………………
在这个应用程序中,我使用了一种非常简单的方法来自定义 Java Swing 的按钮。 实际上,我使用了带有图片的 JLabel 并覆盖了 mousePressed()、mouseReleased() 和 mouseMoved() 事件,模拟了按钮行为。 图片可以是...
这是Swing开发JButton的使用。 1. JButton的简单的是哦那个 2. JButton添加事件监听 3. JButton设置背景图标
swing默认按钮样式不敢恭维,好在扩展性不错。
NULL 博文链接:https://gml520.iteye.com/blog/252858
主要代码: @Override public void paintIcon(Component cmp, Graphics g, int x, int y) { Color lowerColor = new Color(235,255,235); ... Color highColor = new Color(81,184,77);... g2d.setRenderingHint...
jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 ...
import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing....
NULL 博文链接:https://465116728-qq-com.iteye.com/blog/907095