用 Java 创建自定义 JButton

2023-11-21

有没有办法创建一个JButton使用您自己的按钮图形而不仅仅是按钮内的图像?

如果没有,是否有其他方法来创建自定义JButton在java中?


当我第一次学习 Java 时,我们必须制作 Yahtzee,我认为创建自定义 Swing 组件和容器而不是仅仅在一个组件和容器上绘制所有内容会很酷JPanel。延长的好处Swing当然,组件的目的是能够添加对键盘快捷键和其他辅助功能的支持,而这是仅通过一个组件无法做到的。paint()方法打印一张漂亮的图片。然而,这可能不是最好的方式,但对您来说可能是一个很好的起点。

编辑 8/6 - 如果从图像中看不出来,每个骰子都是一个可以单击的按钮。这会将其移动到DiceContainer以下。查看源代码,您可以看到每个 Die 按钮都是根据其值动态绘制的。

alt text
alt text
alt text

以下是基本步骤:

  1. 创建一个扩展类JComponent
  2. 调用父构造函数super()在你的构造函数中
  3. 确保你的类实现了MouseListener
  4. 将其放入构造函数中:

    enableInputMethods(true);   
    addMouseListener(this);
    
  5. 重写这些方法:

    public Dimension getPreferredSize()  
    public Dimension getMinimumSize()  
    public Dimension getMaximumSize()
    
  6. 重写这个方法:

    public void paintComponent(Graphics g)
    

绘制按钮时必须使用的空间量由以下定义:getPreferredSize(), 假设getMinimumSize() and getMaximumSize()返回相同的值。我没有对此进行太多实验,但是根据您用于 GUI 的布局,您的按钮可能看起来完全不同。

最后,源代码。万一我错过了什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 Java 创建自定义 JButton 的相关文章

随机推荐

  • 静态盐与随机盐 - PHP 安全

    两者之间有工作区别吗 hash sha1 key staticSalt and hash sha1 key randomSalt 如果我使用随机盐 我需要将随机盐存储在数据库中 另一方面 如果我使用固定盐 则无需使用数据库 如果代码可以被黑
  • macOS Sierra、Xcode 8 上神秘的“加密验证失败”错误

    我刚刚更新并立即收到此错误 错误 发生密码验证失败 有任何想法吗 编辑 我有 iOS 10 简单的解决方案 我的表现如何 为我工作 第 1 步 转到此文件夹 从查找器中按选项 转到 gt 转到文件夹 然后输入您的项目路径 如下例所示 Lib
  • 如何在 python 3.6 中安装集合 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在尝试安装一个集合库 一个模块 counter 和 defaultdict 我安装了 python 3 6 和 Win 7 64x 安装 pip install coll
  • 使用本地 Javascript 访问本地文件[重复]

    这个问题在这里已经有答案了 根据本网站上的其他答案 我已经觉得我知道这个问题的答案 但是 由于它略有不同 我想问 是否可以从计算机上本地运行的 JavaScript 访问本地文件 又名 我的网站地址为 file C 或者 这也是沙盒的吗 我
  • 使用 System.IdentityModel.Tokens.Jwt 解码和验证 JWT 令牌

    我一直在使用JWT库来解码 Json Web 令牌 并希望切换到 Microsoft 的官方 JWT 实现 System IdentityModel Tokens Jwt 文档非常稀疏 因此我很难弄清楚如何完成我使用 JWT 库所做的事情
  • 在 Java 中将 UTC 时间转换为本地时区

    我知道这个主题已经被打死了 但在搜索了几个小时后我不得不问这个问题 我的问题 根据客户端应用程序 iPhone 的当前时区对服务器上的日期进行计算 客户端应用程序以秒为单位告诉服务器其时区距 GMT 有多远 然后我想使用这些信息来计算服务器
  • 具有两个不相等(唯一)类型的泛型类

    是否可以实现一个仅限于两个唯一通用参数的类 如果不是 是因为它未实现还是因为给定的语言结构 继承 是不可能的 我想要以下形式的东西 class BidirectionalMap
  • GIT 不会从远程提取最新更改

    不知何故 我的本地分支比远程分支晚了 8 个月 当我做git pull origin my branch name 它说Already up to date I tried git fetch origin my branch name t
  • 在哪里可以获得 UNIX 系统调用列表?

    UNIX 上的系统调用列表在哪里 这不是我最初的问题 但无论如何还是谢谢 man 2 syscalls 除此之外 您可以查看 usr include sys syscall h 在我的系统上仅 includes usr include bi
  • Spring Security - 白名单IP范围

    我查看过的许多资源和 stackoverflow 问题都提供了使用的答案 xml files 使用 Spring Security 的 IP 过滤器 http websystique com spring security spring s
  • 检查某个项目是否在嵌套列表中

    在一个简单的列表中 以下检查是微不足道的 x 1 2 3 2 in x gt True 但如果是列表的列表 例如 x 1 2 3 2 3 4 2 in x gt False 如何解决这个问题才能返回True 尝试一下 使用内置的any功能
  • Android 自定义带开关的弹出菜单

    如何自定义弹出菜单中的菜单项 我需要第一个菜单项的开关 这是我到目前为止得到的 menu xml menu menu
  • 可选类型“$T11”不能用作布尔值;自安装 XCode 6 beta 7 以来测试 '!= nil'

    这是我收到错误的代码 for key value in info let fieldValue AnyObject value if fieldValue fieldValue length 0 this line gives the er
  • 如何从另一个 Windows 应用程序获取 Chrome 28 的当前 URL?

    在 Chrome V27 之前 您可以枚举 Chrome 子窗口控件以访问编辑字段并从那里读取字符串值以获取当前打开的 URL 不幸的是 Chrome 28已经切换到新的渲染引擎 Blink 除了主窗口 Chrome WidgetWin 1
  • 使用 cin 将输入作为函数参数传递

    我的程序 class test int k public void changeval int i k i int main test obj int i cin gt gt i obj changeval i return 0 有什么方法
  • char* 和 int* 之间的区别

    有什么区别char and int 当然 它们是不同类型的 但我怎么能写 char s1 hello world as hello world 它不是一个字符 而是一组字符 我不能写 s1 as char s1 h e l l o w o
  • Java中两个List的有效交集?

    问题很简单 我有两个列表 List
  • “.equals”和“==”有什么区别? [复制]

    这个问题在这里已经有答案了 我今天换了讲师 他对我说使用了一个奇怪的代码 他说最好用 equals当我问为什么时 他回答说 因为是这样 这是一个例子 if o1 equals o2 System out println Both integ
  • jQuery 上下文菜单 - 查找触发它的元素

    我正在尝试为我的页面编写一个上下文菜单选项 基本上 右键单击 div 会弹出一个选项菜单 可用于执行任务 我的问题是试图找到触发所有内容的原始元素 即右键单击的 div 我的 jQuery 代码或多或少是 this is what disp
  • 用 Java 创建自定义 JButton

    有没有办法创建一个JButton使用您自己的按钮图形而不仅仅是按钮内的图像 如果没有 是否有其他方法来创建自定义JButton在java中 当我第一次学习 Java 时 我们必须制作 Yahtzee 我认为创建自定义 Swing 组件和容器