java 点击一下左边按钮_右边显出一列表_举个例子_java椭圆按钮怎么设置,最好举一个简单的例子,只要有窗体中一个椭圆按钮就可以,最好有注释,谢谢,好的...
匿名用户
1级
2010-12-14 回答
椭圆按钮要重新绘制按钮才行,对你来说可能会比较难。
import javax.swing.ImageIcon;
import javax.swing.JButton;
public class EllipseButton extends JButton {
static final long serialVersionUID=80;
public EllipseButton(String text){
super(text);
// 创建自己的UI
this.setUI(EllipseButtonUI.createUI(this));
// 取消按钮的边框
this.setBorder(null);
// 不用内容窗格的背景
this.setContentAreaFilled(false);
// 设定边缘
this.setMargin(new Insets(8, 14, 8, 14));
}
public EllipseButton(ImageIcon image){
super(image);
// 创建自己的UI
this.setUI(EllipseButtonUI.createUI(this));
// 取消按钮的边框
this.setBorder(null);
// 不用内容窗格的背景
this.setContentAreaFilled(false);
// 设定边缘
this.setMargin(new Insets(-1,-1,-1,-1));
}
}
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Stroke;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.JComponent;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicButtonUI;
public class EllipseButtonUI extends BasicButtonUI {
protected static EllipseButtonUI singleton = new EllipseButtonUI();
// 创建Stroke用于画按钮
protected static Stroke thickStroke = new BasicStroke(2.0f);
public static ComponentUI createUI(JComponent c) {
return singleton;
}
public void paint(Graphics g, JComponent c) {
// 获得Graphics2D的对象,并开启抗锯齿处理
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// 得到按钮的大小
AbstractButton b = (AbstractButton) c;
Rectangle viewRect = new Rectangle();
viewRect.x = 0;
viewRect.y = 0;
viewRect.width = b.getWidth() - 1;
viewRect.height = b.getHeight() - 1;
// 缩小矩形以显示抗锯齿效果
viewRect.grow(-2, -2);
// 在按钮矩形内创建椭圆
Ellipse2D ellipse = new Ellipse2D.Float();
ellipse.setFrame(viewRect.getX(), viewRect.getY(), viewRect.getWidth(),
viewRect.getHeight());
// 判断按钮有无被按下
ButtonModel model = b.getModel();
boolean pressed = (model.isArmed() && model.isPressed())
|| model.isSelected();
// 根据按钮按下与否设置画笔颜色
if (pressed) {
Color background = UIManager.getColor("Button.select");
g2.setPaint(background == null ? Color.gray : background);
} else
g2.setPaint(UIManager.getColor("control"));
// 填充椭圆按钮
g2.fill(ellipse);
// 根据椭圆按钮的大小来设定边框大小.
Arc2D arc = new Arc2D.Float();
arc.setFrame(viewRect.getX(), viewRect.getY(), viewRect.getWidth(),
viewRect.getHeight());
arc.setArcType(Arc2D.OPEN);
// 设定边框指定弧度的区域
arc.setAngles(viewRect.getWidth(), 0, 0, viewRect.getHeight());
g2.setStroke(thickStroke);
// 根据按钮按下与否设定画笔的颜色
g2.setPaint(pressed ? UIManager.getColor("controlDkShadow") : UIManager
.getColor("controlHighlight"));
g2.draw(arc);
arc.setAngles(0, viewRect.getHeight(), viewRect.getWidth(), 0);
g2.setPaint(pressed ? UIManager.getColor("controlHighlight")
: UIManager.getColor("controlShadow"));
g2.draw(arc);
super.paint(g, c);
// 将图形上下文恢复原来的抗锯齿属性的设置
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);
}
public Dimension getPreferredSize(JComponent c) {
AbstractButton b = (AbstractButton) c;
Dimension dim = super.getPreferredSize(c);
// 调整高度和宽度,为了更好的显示效果
dim.height += (b.getMargin().top + b.getMargin().bottom);
dim.width += (b.getMargin().left + b.getMargin().right);
return dim;
}
}
public class Test extends JFrame {
public Test() {
EllipseButton b = new EllipseButton("按钮");
add(b);
setSize(150, 100);
}
/**
* @param args
*/
public static void main(String[] args) {
new Test().setVisible(true);
}
}
==================================
老大,我都调试过了才发出来的。无语了......
你看代码了没?
里面是3个类?你要分别创建3个类,把代码分别放到各自的类里,哎~~~~~~
java 点击一下左边按钮_右边显出一列表_举个例子_java椭圆按钮怎么设置,最好举一个简单的例子,只要有窗体中一个椭圆按钮就可以,最好有注释,谢谢,好的...相关推荐
- java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...
一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...
- 一个简单的例子看java线程机制
一个简单的例子看java线程机制 作者: zyf0808 发表日期: 2006-03-26 11:20 文章属性: 原创 复制链接 import java.util.*; public class T ...
- 左边是地狱右边也是地狱_我担任地狱首席执行官的时间
左边是地狱右边也是地狱 回顾性 (RETROSPECTIVE) Back in primary school, I was a curious lad. I fit in better with th ...
- 左边是地狱右边也是地狱_像我这样的设计师的特别地狱
左边是地狱右边也是地狱 by Adrian Hanft 通过阿德里安·汉夫特(Adrian Hanft) 像我这样的设计师的特别地狱 (A Special Hell for Designers Lik ...
- 左边是地狱右边也是地狱_地狱甚至还能做些什么(除了拿走我们的钱)
左边是地狱右边也是地狱 As Steam unveils an overhaul to its chat system that barely competes with the rising sta ...
- 左边是地狱右边也是地狱_走出教程地狱
左边是地狱右边也是地狱 Let's face it, we've all been there. Maybe you are still stuck in tutorial hell and are ...
- [安卓] 18、一个简单的例子做自定义动画按钮和自定义Actionbar
在做安卓UI的时候有时候需自定义具有动画效果的按钮或需要自定义一下actionbar~ 本节用一个简单的demo讲如何自定义具有动画效果的按钮,以及个性化的actionbar 下面是效果: 其中: △ ...
- java 框架 例子_如何设计Java框架? –一个简单的例子
通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. 你可能对框架如何工作感到好奇? 这里将通过一个简单的框架示例来说明框架的思想. 框架目标 首先,为什么我 ...
- 【javamatlab】以一个简单的例子实现java和matlab混编
目录 使用环境: MATLAB: matlab代码: 将matlab代码打包: eclipse: jar包配置: 使用jar包: 使用环境: jdk8(ide使用eclipse2019-6).matl ...
最新文章
- 如何设计ER图(弱实体集)
- X Window概述
- 大端(Big Endian)、小端(Little Endian)
- mybatis3中@SelectProvider的使用技巧
- getParameterValues用法
- AFNetworking网络请求与图片上传工具(POST)
- 从DB-Engines看传统数据库生存状况
- 使用Python进行局域网传输文件两种方法
- python机器人仿真软件_【RoboDK官方版下载】RoboDK(机器人仿真软件) v4.2.3 官方版-开心电玩...
- AS常用指令,常用功能,以及常见问题
- oracle 报错904,EXP-00008: 遇到 ORACLE 错误 904
- 题目54:小明的存钱计划
- Fragment already added解决
- SAP RETAIL 执行事务代码WRP1,报错-Transaction WRP1 cannot be executed-
- 简单几步实现内网穿透
- 使用Java做ORC图片识别
- 暴力字典密码破解之crypt
- 【现代密码学】仿射密码加密
- 32631、32649分别代表什么坐标系?
- excel mysql 财务_excel财务函数
热门文章
- 比特币最主流,以太坊大跌,区块链技术“万金油”红利已结束 | 区块链开发者年度报告...
- 华为举办HDC.Cloud媒体预沟通会,为开发者提供ICT“黑土地”
- Visual Basic之父回忆往事
- 阿里开源物联网操作系统 AliOS Things 3.0 发布,集成平头哥 AI 芯片架构!
- 前 1 号店 CTO 黄哲铿揭秘:微服务架构在超大场景下的应用
- 普通程序员能实现财务自由吗?
- AI 生态赋能 2018 论坛来袭!转型 AI 看这里!
- jq ajax xml,jQuery+ajax读取并解析XML文件的方法
- php soap proxy host,php-PHP soap Could not connect to host
- oracle 12c 取消omf,Oracle12c创建及删除PDB