把按钮做成圆形

2024-04-04

我正在尝试在 (150,210) 的 (x,y) 坐标处制作 JButton 圆。我希望按钮是大小为 (40,40) 的椭圆形。按钮的背景颜色为红色。它不需要文本,所以我应该得到一个我想要的任何大小的按钮,对吗?

我正在使用面板,并将 setLayout 设置为 null:

setLayout(null)

我查了谷歌,它把我带到了这里。我怎样才能做到这一点?


JDC 技术提示:1999 年 8 月 26 日:创建圆形摆动按钮 http://java.sun.com/developer/TechTips/1999/tt0826.html

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class RoundButton extends JButton {
  public RoundButton(String label) {
    super(label);

// These statements enlarge the button so that it 
// becomes a circle rather than an oval.
    Dimension size = getPreferredSize();
    size.width = size.height = Math.max(size.width, 
      size.height);
    setPreferredSize(size);

// This call causes the JButton not to paint 
   // the background.
// This allows us to paint a round background.
    setContentAreaFilled(false);
  }

// Paint the round background and label.
  protected void paintComponent(Graphics g) {
    if (getModel().isArmed()) {
// You might want to make the highlight color 
   // a property of the RoundButton class.
      g.setColor(Color.lightGray);
    } else {
      g.setColor(getBackground());
    }
    g.fillOval(0, 0, getSize().width-1, 
      getSize().height-1);

// This call will paint the label and the 
   // focus rectangle.
    super.paintComponent(g);
  }

// Paint the border of the button using a simple stroke.
  protected void paintBorder(Graphics g) {
    g.setColor(getForeground());
    g.drawOval(0, 0, getSize().width-1, 
      getSize().height-1);
  }

// Hit detection.
  Shape shape;
  public boolean contains(int x, int y) {
// If the button has changed size, 
   // make a new shape object.
    if (shape == null || 
      !shape.getBounds().equals(getBounds())) {
      shape = new Ellipse2D.Float(0, 0, 
        getWidth(), getHeight());
    }
    return shape.contains(x, y);
  }

// Test routine.
  public static void main(String[] args) {
// Create a button with the label "Jackpot".
    JButton button = new RoundButton("Jackpot");
    button.setBackground(Color.green);

// Create a frame in which to show the button.
    JFrame frame = new JFrame();
    frame.getContentPane().setBackground(Color.yellow);
    frame.getContentPane().add(button);
    frame.getContentPane().setLayout(new FlowLayout());
    frame.setSize(150, 150);
    frame.setVisible(true);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

把按钮做成圆形 的相关文章

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 当我在 hql 中使用 join 关键字时,为什么会得到 Path Expected for join

    我有以下 HQL String FIND PRODUCT CLASS ID SELECT pc id FROM ProductClass pc JOIN ProductGroup pg ON pc id pg productClassId
  • 如何将 C# MVC5 Global.asax 迁移到 ASP.NET Core Startup.cs

    有人可以演示如何在 ASP NET Core 中成功声明依赖于主机名的静态项目变量吗 以前 我有类似于下面的代码 使用 Global asax 来识别项目运行的主机名 并设置整个项目可以使用的一些简单的静态变量 如 MvcApplicati
  • 在 GitHub 上显示 pdf 差异

    有没有办法显示两个版本的 pdf 或 doc odf 文件之间的差异 提交信息 现在我只能下载它的任何版本 查看原始 按钮 PDF DOC 和 ODF 文件是二进制格式 不包含纯文本 Git 并不真正支持人类可读的二进制文件差异 它可以生成
  • 使用 IIS ApplicationInitialization remapManagedRequestsTo 功能时返回用于提供静态 html 的自定义响应代码?

    我目前正在使用应用程序初始化 https learn microsoft com en us iis configuration system webserver applicationinitialization IIS 的功能来预热我的
  • 检查对象是数字还是布尔值

    设计一个等价于以下语句的逻辑表达式 x是一个包含三个或五个元素的列表 其中第二个元素是 字符串 Hip 其中第一个不是数字或布尔值 我拥有的 x Head Hip 10 print x 1 is Hip 我的问题 如何检查它是布尔值还是数字
  • 在 MySQL 服务启动时运行 SQL 查询

    我在 mysql 上创建了 HEAP ram 表以加快查询速度 但是mysql服务器重新启动后 我的堆表中的数据没有加载 我的正常表名 productsid 产品名称 状态为 myisam id gt 整数和自动增量 主键 产品名称 gt
  • 检票口:带有 ListView 的 FileUploadField

    我有一个用于上传多个文件的页面 对于每个文件 用户必须指定类型和描述 这就是为什么我不能使用MultiFileUploadField 所以我用RepeatingView with a FileUploadField在每个元素以及我需要的其他
  • python scikit-learn 缺失数据聚类

    我想对缺少列的数据进行聚类 手动执行此操作 我将在没有此列的情况下计算缺少列的距离 使用 scikit learn 不可能出现丢失数据的情况 也没有机会指定用户距离函数 是否有机会对缺失数据进行聚类 示例数据 n samples 1500
  • 如何立即触发timer.Elapsed事件

    我正在使用System Timers Timer类来创建一个计时器Timer Elapsed事件 事情是Timer Elapsed仅在间隔时间过去后才会首次触发事件 有没有办法提高Timer Elapsed启动计时器后立即发生事件 我在中找
  • 有没有办法在 Jenkins 构建队列小部件中显示更多信息?

    在詹金斯状态页面上 我们有以下小部件 它显示 主 作业挂起 5 次 这是合理的 因为每次将代码审查推送到 Gerrit 时 它都会触发该分支上的这些更改的作业 如果我将鼠标悬停在这些 主 链接上 我可以看到环境中的许多有用信息 例如 GER
  • Android Oreo 位置通过 JobIntentService 在后台更新

    我曾经有AlarmManager WakefulBroadcastReceiver 服务做一些后台代码并获取位置更新 从奥利奥开始 这已被弃用 所以现在我使用AlarmManager BroadcastReceiver JobIntentS
  • main() 是 C 中的预定义函数吗? [复制]

    这个问题在这里已经有答案了 可能的重复 C C Java C 中的 main https stackoverflow com questions 1539385 main in c c java c 总的来说 我对编程很陌生 尤其是 C 我
  • 如何以编程方式调用 Maven 依赖插件

    我正在尝试以编程方式调用 maven dependency plugin 我正在使用 Maven 3 版本 问题是 当我通过pluginManager executeMojo session execution 调用它时 我收到以下错误消息
  • 使用 json.net 反序列化静态属性?

    大家好 我有一个如下所示的 JSON totals tokenType string tokenDenomination double count int IDCode string Key string 反序列化为对象的 C 代码是 in
  • 使用 WooCommerce 中的挂钩更新产品价格

    我正在尝试使用元键更新产品正常价格 regular price当产品在 wp admin 中更新时 使用整数或字符串 我想要的用户流程是 打开产品编辑页面 单击更新按钮 页面重新加载后 请看到 regular price 设置为 20 ad
  • 无法从 Windows 调试 Web 应用程序中的 iOS 问题?

    我在 iPad Pro 和 iPhone 7 Plus 上测试 Web 应用程序时发现了一些错误 我无法使用 Windows 或 Android 中的任何浏览器复制这些错误 并且找不到任何在 Windows 中远程调试 Safari 的方法
  • 如何迭代 C# 类查找特定类型的所有实例,然后在每个实例上调用方法

    是否可以 通过反射 迭代对象的所有字段 并在每个字段上调用一个方法 我有一堂课是这样的 public class Overlay public Control control1 public Control control2 我想要一个像这
  • 自动映射器表达式必须解析为顶级成员

    我正在使用自动映射器来映射源对象和目标对象 当我映射它们时 我收到以下错误 表达式必须解析为顶级成员 参数名称 lambda表达式 我无法解决这个问题 我的源对象和目标对象是 public partial class Source priv
  • C 删除文件最后 n 个字符

    我需要使用 C 代码从文件中删除最后 n 个字符 起初我尝试使用 b 但它返回了分段错误 我看到类似问题的有趣答案here https stackoverflow com questions 584639 truncate file and
  • 把按钮做成圆形

    我正在尝试在 150 210 的 x y 坐标处制作 JButton 圆 我希望按钮是大小为 40 40 的椭圆形 按钮的背景颜色为红色 它不需要文本 所以我应该得到一个我想要的任何大小的按钮 对吗 我正在使用面板 并将 setLayout