匿名用户

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椭圆按钮怎么设置,最好举一个简单的例子,只要有窗体中一个椭圆按钮就可以,最好有注释,谢谢,好的...相关推荐

  1. java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...

    一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...

  2. 一个简单的例子看java线程机制

    一个简单的例子看java线程机制 作者: zyf0808 发表日期: 2006-03-26 11:20 文章属性: 原创 复制链接 import java.util.*; public class T ...

  3. 左边是地狱右边也是地狱_我担任地狱首席执行官的时间

    左边是地狱右边也是地狱 回顾性 (RETROSPECTIVE) Back in primary school, I was a curious lad. I fit in better with th ...

  4. 左边是地狱右边也是地狱_像我这样的设计师的特别地狱

    左边是地狱右边也是地狱 by Adrian Hanft 通过阿德里安·汉夫特(Adrian Hanft) 像我这样的设计师的特别地狱 (A Special Hell for Designers Lik ...

  5. 左边是地狱右边也是地狱_地狱甚至还能做些什么(除了拿走我们的钱)

    左边是地狱右边也是地狱 As Steam unveils an overhaul to its chat system that barely competes with the rising sta ...

  6. 左边是地狱右边也是地狱_走出教程地狱

    左边是地狱右边也是地狱 Let's face it, we've all been there. Maybe you are still stuck in tutorial hell and are ...

  7. [安卓] 18、一个简单的例子做自定义动画按钮和自定义Actionbar

    在做安卓UI的时候有时候需自定义具有动画效果的按钮或需要自定义一下actionbar~ 本节用一个简单的demo讲如何自定义具有动画效果的按钮,以及个性化的actionbar 下面是效果: 其中: △ ...

  8. java 框架 例子_如何设计Java框架? –一个简单的例子

    通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. 你可能对框架如何工作感到好奇? 这里将通过一个简单的框架示例来说明框架的思想. 框架目标 首先,为什么我 ...

  9. 【javamatlab】以一个简单的例子实现java和matlab混编

    目录 使用环境: MATLAB: matlab代码: 将matlab代码打包: eclipse: jar包配置: 使用jar包: 使用环境: jdk8(ide使用eclipse2019-6).matl ...

最新文章

  1. 如何设计ER图(弱实体集)
  2. X Window概述
  3. 大端(Big Endian)、小端(Little Endian)
  4. mybatis3中@SelectProvider的使用技巧
  5. getParameterValues用法
  6. AFNetworking网络请求与图片上传工具(POST)
  7. 从DB-Engines看传统数据库生存状况
  8. 使用Python进行局域网传输文件两种方法
  9. python机器人仿真软件_【RoboDK官方版下载】RoboDK(机器人仿真软件) v4.2.3 官方版-开心电玩...
  10. AS常用指令,常用功能,以及常见问题
  11. oracle 报错904,EXP-00008: 遇到 ORACLE 错误 904
  12. 题目54:小明的存钱计划
  13. Fragment already added解决
  14. SAP RETAIL 执行事务代码WRP1,报错-Transaction WRP1 cannot be executed-
  15. 简单几步实现内网穿透
  16. 使用Java做ORC图片识别
  17. 暴力字典密码破解之crypt
  18. 【现代密码学】仿射密码加密
  19. 32631、32649分别代表什么坐标系?
  20. excel mysql 财务_excel财务函数

热门文章

  1. 比特币最主流,以太坊大跌,区块链技术“万金油”红利已结束 | 区块链开发者年度报告...
  2. 华为举办HDC.Cloud媒体预沟通会,为开发者提供ICT“黑土地”
  3. Visual Basic之父回忆往事
  4. 阿里开源物联网操作系统 AliOS Things 3.0 发布,集成平头哥 AI 芯片架构!
  5. 前 1 号店 CTO 黄哲铿揭秘:微服务架构在超大场景下的应用
  6. 普通程序员能实现财务自由吗?
  7. AI 生态赋能 2018 论坛来袭!转型 AI 看这里!
  8. jq ajax xml,jQuery+ajax读取并解析XML文件的方法
  9. php soap proxy host,php-PHP soap Could not connect to host
  10. oracle 12c 取消omf,Oracle12c创建及删除PDB