绘制包含显示圆形图标的标签

2023-12-06

所以我试图绘制一个标签,其中包含一个显示圆圈的图标。该圆圈最初将被填充为红色,然后根据我按下的 3 个按钮中的哪一个,它会使用重绘更改为绿色、蓝色或红色。

这是我到目前为止所拥有的:

public class ColorChanger implements Icon {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame myFrame = new JFrame();
        JButton redButton = new JButton("Red");
        JButton greenButton = new JButton("Green");
        JButton blueButton = new JButton("Blue");
        Graphics g;

        ColorChanger myCircle = new ColorChanger();
        final JLabel myLabel = new JLabel(myCircle);

    //  myCircle.paintIcon(myFrame, g, 50, 50);

        final int FRAME_WIDTH = 300;
        final int FRAME_HEIGHT = 200; 

        myFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        myFrame.setLayout(new FlowLayout());

        myFrame.add(redButton);
        myFrame.add(greenButton);
        myFrame.add(blueButton);
        myFrame.add(myLabel);

        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        myFrame.pack();
        myFrame.setVisible(true); 
    }

    @Override
    public int getIconWidth() {
        // TODO Auto-generated method stub
        return 10;
    }

    @Override
    public int getIconHeight() {
        // TODO Auto-generated method stub
        return 10;
    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        // TODO Auto-generated method stub
        Graphics2D g2 = (Graphics2D) g;
        Ellipse2D.Double circle = new Ellipse2D.Double(50, 50, 10, 10);
        g2.setColor(Color.RED);
        g2.fill(circle);
    }    
}

我的问题是,我不知道在paintIcon 中为Graphics g 传递什么。有其他方法可以做到这一点吗?我很感激任何帮助。


Ellipse2D.Double circle = new Ellipse2D.Double(50, 50, 10, 10);

图标的大小为 (10, 10)。 50,超出了图标的范围。绘画是相对于图标完成的,因此椭圆应该是:

Ellipse2D.Double circle = new Ellipse2D.Double(0, 0, 10, 10);

使用重绘它会变成绿色、蓝色或红色。

你的 ColorChanger 类将需要一个setColor(Color color)方法,以便您可以动态更改要绘制的颜色。 PaintIcon() 方法应该使用这个颜色。

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

绘制包含显示圆形图标的标签 的相关文章

  • Java中使用正则表达式确定字符串是否为URL [重复]

    这个问题在这里已经有答案了 可能的重复 检查字符串是否为有效 URL 的最佳正则表达式是什么 https stackoverflow com questions 161738 what is the best regular express
  • 我们可以实例化一个抽象类吗?

    在一次采访中 有人问我 我们是否可以实例化一个抽象类 我的回答是 不 我们不能 但是 面试官告诉我 错了 我们可以 我对此争论了一下 然后他告诉我自己在家尝试一下 abstract class my public void mymethod
  • 何时在java中使用get/set方法[重复]

    这个问题在这里已经有答案了 我想知道何时在我的类中使用 get 和 set 方法 getName setName 以及何时简单classVariable name 反而 classVariable getName 这是使用 set 和 ge
  • 搜索 JTable 时 - 未获得正确的 ID

    所以我尝试在搜索名称后单击表 然后在其他表中编辑它 问题是我没有获得正确的 ID 而只获得第一个 ID JTable https i stack imgur com TnNIq png 搜索行动 https i stack imgur co
  • 使用 GIN 注入 Class

    有没有办法注入类类型Class
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • swing - 在 JPanel 上单击组件

    好的 我有一个带有 GridLayout 的 JPanel 网格的每个单元格都包含另一个 JPanel 我希望能够做的是在 下方 JPanel 上有一个侦听器 然后它告诉我单击了哪个 覆盖 JPanel 这样我就可以对它和周围的 JPane
  • Java 相当于 C# 的 async/await?

    我是一名普通的 C 开发人员 但偶尔也会使用 Java 开发应用程序 我想知道 Java 中是否有相当于 C async await 的东西 简单来说 java 相当于 async Task
  • Lcom/google/firebase/FirebaseApp 类中没有虚拟方法 zzbqo()Z;或其超类(“com.google.firebase.FirebaseApp”的声明

    在我的 Android 应用程序中 编译应用程序时出现错误 我正在最新的 android studio 中工作 并使用 Firebase UI Auth 和 Firebase 数据库 所有版本在应用程序级等级文件中都相同 那么为什么我收到此
  • RecyclerView onItemClickListener 不工作

    我正在研究回收视图并尝试对 recyclerview 的每个项目使用点击侦听器界面 这是我的活动课程 public class LegacyHomeActivity extends ActivityBaseDrawer private Li
  • 使用电子邮件、用户名和密码进行 Firebase 身份验证

    我想知道是否可以使用电子邮件和用户 ID 密码登录 我有一个项目 我希望用户添加一个唯一的号码 实际上是我们公司提供的工作识别号码 以便能够签名参与该计划的人员将继续留在公司就业 即使电子邮件和密码正确但用户 ID 错误 我也需要 fire
  • Java - 修剪字节数组中的尾随空格

    我有与此类似的字节数组 77 83 65 80 79 67 32 32 32 32 32 32 32 大致等于 M S A P O C when printed as chars 现在我想修剪尾随空白 使其看起来像 77 83 65 80
  • 在java中的super调用之前创建一个对象

    考虑到简单的java代码是行不通的 public class Bar extends AbstractBar private final Foo foo new Foo bar public Bar super foo 我需要在之前创建一个
  • 将文件内容存储到数组中

    我的刽子手程序有问题 我真的认为我需要做的事情超出了我对java的理解 这是我的代码 import java io BufferedReader import java io FileReader import java io FileNo
  • 线程缓存和 Java 内存模型

    我正在尝试了解 Java 内存模型和线程 据我了解 每个线程都有 主 内存的本地副本 因此 如果一个线程尝试更改int变量 例如某个对象的变量 它会缓存int变量 如果它更改它 其他线程可能看不到更改 但是如果线程缓存一些对象而不是 int
  • 我们还需要迭代器设计模式吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JPanel 无法使用 setSize 和 setPreferedSize

    请解释为什么它不起作用 您也可以发布解决方案来解决此问题 非常感谢您提前 public class Run extends JFrame Fields static JPanel jpanel private int x y Constru
  • javaFX,抛出 NullPointerException,位置是必需的

    我看过其他答案 但没有任何帮助我 抱歉 GUI新手只知道swing的基础知识 这是主课 package application import javafx application Application import javafx fxml
  • 请解释*贪婪量词的工作原理

    Pattern ptn Pattern compile a Matcher mtch ptn matcher bbaac if mtch find System out println mtch group 输出 不打印任何内容 Patte
  • 无法使用 Struts 2 重定向 JSP 文件并显示值

    我创建了一个简单的程序 使用文本字段获取用户的名字和姓氏 但问题是 当我单击提交按钮时 我无法将其重定向到另一个显示用户名字和姓氏的 jsp 文件 这是我的HelloAction class package com novamsc trai

随机推荐

  • 如果无法继承QSlider,如何为滑块添加刻度线

    我有一个 Qt 对话框 里面有一个滑块 当对话框初始化时 滑块将被设置一个值 为了提醒用户默认值是什么 我想给滑块添加一个标记 只需在手柄上方画一条线或一个三角形即可 这里 滑块应该是QSlider类型 这意味着我无法实现从QSlider派
  • Neo4j 强制索引的问题

    我遇到了一个问题 我在 Cypher 批量查询中强制使用索引 UNWIND rows AS row MATCH s Entity USING INDEX s Entity uuid WHERE s uuid row source MATCH
  • 如何在postgresql中查找任意大小的数组的所有组合(子集)[重复]

    这个问题在这里已经有答案了 给定一个数组 如何在 postgresql 中查找特定大小的元素的所有组合 子集 例如 给定一个数组 1 2 3 4 大小为 3 的所有组合都是 1 2 3 1 2 4 1 3 4 2 3 4 组合中的顺序并不重
  • NSURLSession:如何增加 URL 请求的超时时间?

    我正在使用iOS 7的新功能NSURLSessionDataTask检索数据如下 NSURLSession session NSURLSession sharedSession NSURLSessionDataTask dataTask s
  • 游戏中的卡牌等级

    我是一名 Java 初学者 因此 任何帮助将不胜感激 我设计了一个卡片类和甲板类 我将在我创建的游戏中使用它们 到目前为止 我的游戏似乎运行得很好 但问题出在我的 Cards 类上 我想利用 getRank 方法为玩家拥有的牌 无论花色如何
  • 如何在数据表列标题的过滤框中添加占位符文本

    我有一个素数面孔数据表 其中只有几列 并且所有列都有 filteryBy 属性 如何添加占位符或水印来为用户提供提示 任何建议 将不胜感激
  • 函数数组<可选> -> 可选<数组>

    这是我想做的 extension Array
  • Woocommerce 禁用自动订单状态更改挂起->处理

    我想禁用这个选项 每当有人在我的网站上制作和订购并且付款成功时 订单状态会自动从待处理 但是 我不想要此功能已启用 相反 我想在处理订单时手动执行此操作 我在 woocommerce 中发现了此功能 这使得此功能成为可能 我不想直接在那里更
  • Gem 安装 ruby​​-audio 失败

    我已经克隆了一个现有的存储库并且现在正在运行bundle install 由于某种原因 它在 ruby audio gem 上失败了 Installing ruby audio 1 6 1 with native extensions Ge
  • 重新格式化列中的日期

    我在 SQLite DB 中有一些以下形式的数据 id column1 date 111 280 1 1 2014 114 275 1 2 2014 日期字段的类型为 TEXT 我已被告知 https www sqlite org lang
  • docker 如何使用带引号的新命令提交 docker

    在制作 docker 的过程中 我必须将其命令从 bin sh 更改为nginx g daemon off 正是如此 I wrote docker commit change EXPOSE 80 change CMD nginx g dae
  • MongoDB:按日期查询

    在 MongoDB 数据库中 我有一个项目集合 每个项目都存储其创建日期 我需要按日期查询这个集合 我试过 db items findOne date new Date 1285947037 1000 但它没有返回任何东西 我使用 PHP
  • FreeType 如何渲染 ü ä ö 等特殊字符?

    我一直坚持使用 FreeType 渲染文本 尤其是非ascii字符让我头疼 经过一番尝试和错误后 我设法呈现一些文本 但我的变音符号没有显示 std string text Hauptmen for std string iterator
  • MVC C# 下拉列表在模型上显示 System.Web.SelectListItem 并且不能盲视控制器

    请帮我 我的下拉列表显示System Web SelectListItem在调试模式下 但不显示我在列表中定义的实际文本 任何人都可以帮忙吗 如何使控制器具有我在列表中定义的文本 而且我的下拉列表在选择时并不盲目 请帮我 这是它的样子 请看
  • 将 JComponent 重置为默认值

    例如 如果组件是一个复选框 则必须设置为 false 或者它是一个文本字段 则必须清除文本 我正在尝试编写一种重置所有组件的方法JPanel 它必须像 HTML 表单中的重置功能一样工作 如何重置JComponent到默认值 作为一名优秀的
  • 当目录名称包含方括号“[ ]”等特殊字符时,Glob 不起作用

    当路径目录带有方括号时 我在使用 glob 函数时遇到问题 Example 1 working path temp DIRECTORY SEPARATOR dir name files glob path DIRECTORY SEPARAT
  • 从 SciPy 稀疏矩阵填充 Pandas SparseDataFrame

    我注意到熊猫现在有支持稀疏矩阵和数组 目前 我创建DataFrame 像这样 return DataFrame matrix toarray columns features index observations 有没有办法创建一个Spar
  • 如何设置图标以获取基础FloatingActionsMenu

    我正在使用 com getbase floatingactionbutton FloatingActionsMenu 作为可扩展的 FAB 但无法在 fab 菜单上设置图标 我尝试过设置背景可绘制 但不起作用 谢谢
  • FFmpeg:编码 PCM 16 音频数据分配错误

    我目前正在尝试使用 avi 容器内的一些视频对一些原始音频数据进行编码 使用的视频编解码器是 mpeg4 我想使用 PCM 16LE 作为音频编解码器 但我面临着一个问题AVCodec gt frame size音频样本的参数 完成所有正确
  • 绘制包含显示圆形图标的标签

    所以我试图绘制一个标签 其中包含一个显示圆圈的图标 该圆圈最初将被填充为红色 然后根据我按下的 3 个按钮中的哪一个 它会使用重绘更改为绿色 蓝色或红色 这是我到目前为止所拥有的 public class ColorChanger impl