<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
1 ////////////////////////////////////////////////////////////////////////////////////
2 //
3 // 文件名: nButton.java
4 //
5 // 功 能: 自定义按钮
6 //
7 // 备 注: 按钮设置大小时,应比实际图片大小宽1、高1象素。
8 //
9 /////////////////////////////////////////////////////////////////////////////////////
10 import java.awt.*;
11 import java.awt.geom.*;
12 import javax.swing.*;
13 import java.io.*;
14
15 public class nButton extends JButton
16 {
17
18 Image img;
19 public Color back;
20 ImageIcon icon = new ImageIcon ();
21 public nButton()
22 {
23 super ();
24 Dimension size = getPreferredSize ();
25 size.width = size.height = Math.max (size.width, size.height);
26 setPreferredSize (size);
27 //这个调用使JButton不画背景,而允许画一个圆的背景。
28 setContentAreaFilled (false);
29 }
30
31
32 public nButton(String label)
33 {
34 super (label);
35 // 这些声明把按钮扩展为一个圆而不是一个椭圆。
36 Dimension size = getPreferredSize ();
37 size.width = size.height = Math.max (size.width, size.height);
38 setPreferredSize (size);
39
40 //这个调用使JButton不画背景,而允许我们画一个圆的背景。
41 setContentAreaFilled (false);
42 }
43
44 // 画圆的背景和标签
45 protected void paintComponent (Graphics g)
46 {
47 if (getModel ().isArmed ())
48 {
49
50 // 可以选一个高亮的颜色作为圆形按钮类的属性
51 g.setColor (back);
52 }
53 else
54 {
55 g.setColor (back);
56 }
57 g.fillRect (0, 0, getSize ().width, getSize ().height);
58
59 //这个调用会画一个标签和焦点矩形。
60 super.paintComponent (g);
61 }
62
63
64 public void setImageIcon (Image img)
65 {
66 this.img = img;
67 }
68
69 // 用简单的弧画按钮的边界。
70 protected void paintBorder (Graphics g)
71 {
72 //g.setColor(back);
73 //g.drawRect(-1, -1, getSize().width + 1 , getSize().height + 1);
74 }
75
76
77 // 侦测点击事件
78 Shape shape;
79 public boolean contains (int x, int y)
80 {
81 // 如果按钮改变大小,产生一个新的形状对象。
82 if (shape == null ||
83 !shape.getBounds ().equals (getBounds ()))
84 {
85 shape = new Ellipse2D.Float (0, 0, getWidth (), getHeight ());
86 }
87 return shape.contains (x, y);
88 }
89 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
90 //下面都是测试代码
91 public void init ()
92 {
93 icon = new ImageIcon (getClass ().getResource ("clear1.jpg"));
94 this.setIcon((Icon) icon) ;
95 icon = new ImageIcon (getClass ().getResource ("clear2.jpg"));
96 this.setRolloverIcon((Icon) icon);
97 this.setPressedIcon ((Icon) icon);
98 //return icon;
99 }
100 public static void main (String args[])
101 {
102 JFrame frame = new JFrame ("test");
103 frame.setLayout(null);
104 nButton btn = new nButton();
105 btn.init();
106 btn.back = frame.getContentPane ().getBackground () ;
107 btn.setToolTipText ("test");
108 btn.setBounds (100,100 ,62,21) ;
109 frame.add (btn);
110 frame.setSize (300,300);
111 frame.setVisible (true);
112 frame.setDefaultCloseOperation (3);
113 }
114
115 }
116
117
分享到:
相关推荐
"完整版扩展按钮控件"通常指的是一个包含多种样式、功能和定制选项的按钮组件库,旨在为开发者提供更丰富的选择,以创建更具吸引力和交互性的用户界面。 扩展按钮控件通常具有以下特性: 1. **多样化设计**:这些...
"易语言模块扩展按钮控件.rar" 是一个与易语言相关的资源包,主要包含了一个用于扩展易语言中按钮控件功能的模块。 在编程中,控件是用户界面的基本元素,用于接收用户的输入或展示信息。按钮控件是最常见的控件之...
本资源“易语言源码扩展按钮控件.7z”是一个压缩包,其中包含了一组针对易语言的源代码,用于扩展按钮控件的功能。 按钮控件在软件界面设计中扮演着重要角色,它是用户与程序交互的常见元素。通常的按钮控件可能只...
"swift-Swift可扩展按钮效果同时支持多种按钮状态"这个主题探讨的是如何在Swift中实现一个按钮组件,它不仅能够展示不同的视觉效果,还能根据按钮的不同状态(如正常、高亮、选中、禁用等)做出相应的变化。...
总之,CButtonEx扩展按钮控件在MFC环境中为开发者提供了强大的工具,能够创建更美观、功能更丰富的按钮。它的图片支持、tooltip功能以及普通和特殊按钮的分类,都极大地丰富了UI设计的可能性,使得开发者能够更加...
《易语言扩展按钮控件程序源码解析及应用》 易语言是一种面向对象、图形化编程的中文编程语言,旨在降低编程的难度,使更多的人能够参与到编程中来。本资源包“扩展按钮控件.zip”包含了一组易语言的程序源码,专门...
可扩展按钮(SAExpandableButton)是一种在iOS开发中实现的自定义UI组件,它提供了一种轻量级且灵活的方式来创建按钮,特别是在需要在用户交互时改变按钮的行为或外观时。这种按钮的设计思路是使其在点击时能够展开...
【可扩展按钮效果,同时支持多种按钮状态】 在软件开发中,用户界面的交互性是提升用户体验的关键因素之一。一个良好的按钮设计不仅需要美观,还要能够有效地传达功能,并且能够根据不同的状态变化来提供反馈。"可...
C#脉冲效果的圆角和圆形按钮,通过继承原生Button控件重绘实现,动态扩展按钮范围类似脉冲,可指定边框大小颜色、脉冲变化速度范围、渐变颜色、添加图片等。循环扩展脉冲效果,定时器在控件扩展中的使用。 Winform...
在这个动态扩展按钮中,`touchesBegan:`可能用于启动扩展动画,`touchesEnded:`则可能用于停止动画并执行相应操作。 3. 动画实现:在iOS中,我们可以使用Core Animation或者UIView的动画块来创建动态效果。在这个...
6. **自定义行为**:允许开发者编写自己的代码来扩展按钮的功能,比如弹出下拉菜单、打开文件选择对话框等。 7. **源代码开放**:这一点非常重要,因为开发者可以查看并修改控件的内部逻辑,以适应特定项目的需求。...
"计算机软件-商业源码-按钮扩展风格的服务对象.zip"这个文件可能包含了一套用于创建具有扩展按钮风格的服务对象的商业源码。服务对象在软件开发中扮演着重要的角色,它们是为了抽象和封装业务逻辑而设计的类或模块。...
文字转语音浏览器扩展按钮 安装 :warning: 似乎当前使用现有安装的用户可以继续使用这些扩展,但是在没有Google批准的情况下,尚不清楚该扩展将持续多长时间。 一个解决方案正在研究中; 在问题解决之前,请耐心...
在U9界面上添加按钮的三种方法总结 1、在工具栏上添加 2、在功能区添加 3、在功能区下拉列表上添加
当我们谈论"C# WinForm按钮风格封装"时,我们指的是利用C#语言和WinForms库来定制和扩展按钮控件(Button)的外观和行为,以满足不同设计需求。这通常涉及到自定义绘图、事件处理和样式控制。 首先,让我们了解...
- 扩展功能:除了外观,还可以扩展按钮的行为,例如添加额外的事件处理程序或属性。 2. 自定义文本框: - 文本框定制通常涉及输入验证、样式美化和功能增强。可以通过继承`TextBox`类并覆写默认样式,或者使用`...
提供对您的Chrome扩展程序的快速图标访问。 在原始扩展按钮扩展上进行了改进。 -仅打开一个扩展选项卡-开源资源可从https://git.io/vuuSc获得 支持语言:English
这是一款简单的Bootstrap4按钮样式扩展库。该Bootstrap4按钮样式扩展库通过定义CSS,来为bootstrap 4原生按钮添加3D按钮,带图标的按钮,圆角按钮,以及为按钮添加更多的可用颜色,非常实用。
扩展类可能还会包含其他的实用方法,比如允许自定义按钮在被点击后的动画效果,或者在按钮失效期间显示不同的视觉状态(如禁用图标或灰色背景)。这些功能可以帮助提升用户的交互体验,让用户明确知道按钮当前是否...
MFC的CBitmapButton的扩展类,实现了: 按钮正常、按下、弹起、禁用等不同状态图片切换; 鼠标经过按钮时按钮状态图片的改变; 鼠标指针在按钮上时形状的改变; 异形按钮,利用按钮自绘实现了特殊形状按钮; 按钮...