如何在 JFrame 内的 JPanel 内绘制形状

2023-12-01

我在 JPanel 内部绘制已使用 Netbeans GUI 添加的形状时遇到问题。现在,我不知道在哪里添加用于在该 JPanel 内绘制圆的代码,以及如何在现在空着的 JPanel 中插入和调用它,等待绘制该形状。我已经将目标 JPanel 设置为 Flow 布局。 Netbeans Designer 创建了一个大类,其中我有这个 JPanel 的整个框架,并且我想将其保留在其中,因为我无法真正以任何其他方式添加它,因为 Designer 不允许我更改主 initComponents 方法,其中所有组件现在就位。我一直在阅读教程和以前的帖子,但没有人真正使用 Netbeans Designer 遇到过这种情况。 有人可以帮助我在这个框架类中添加正确的方法以及如何从我想要绘制的 JPanel 中调用它。JPanel 是 50x50 像素。

因此,根据@Abra,我更改了一些代码:

所以我创建了一个新的 Circle 类,对其进行了一些调整,因为我不想创建新框架,而是将其放入 JPanel 中。

public class Circle extends JPanel {
Color color;
public void circle(Color color)    {
    this.color = color;
    setPreferredSize(new Dimension (30,30));
}
public void paintComponent(Graphics g)    {
    super.paintComponent(g);
    g.drawOval(0, 0, r, r);
    g.setColor(color);
}
private void showGUI() {
    JPanel panel = new JPanel();
    panel.add(this, FlowLayout.CENTER);
    panel.setVisible(true);
}       
}  
                                                                                                                        

然后我在 Designer 中打开 JPanel,并在 initComponents 方法中添加代码来运行它,如下所示:

circlePanel.setPreferredSize(new java.awt.Dimension(40, 40));
    new Circle().showGUI();
    PanelDS.add(circlePanel); 
                   

                                                      

CirclePanel 是该绘图的目标,位于 PanelDS 本身内部。虽然这种方式行不通,但 Netbeans 在代码中没有显示任何错误。另外,我如何将颜色转发到圆类。


为了绘制一个JPanel你需要覆盖paintComponent()的方法JPanel。为了重写该方法,您需要创建一个扩展的类JPanel。我认为不存在可以为您生成所需代码的 GUI 设计器。所以你必须编写扩展类的代码JPanel.

这是一个最小的例子。它显示一个蓝色圆圈。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class Drawing2 extends JPanel {
    private JFrame  frame;

    public Drawing2() {
        setPreferredSize(new Dimension(100, 100));
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLUE);
        g.fillOval(25, 25, 50, 50);
    }

    private void showGui() {
        frame = new JFrame("Drawing");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(this, BorderLayout.CENTER);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Drawing2().showGui();
    }
}

这是运行上述代码时应该看到的内容。

Blue circle

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

如何在 JFrame 内的 JPanel 内绘制形状 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 从变量设置 div 样式标签中的宽度和高度值

    在我的 javascript 文件中 我有以下行 div style width 200px height 100px div 我想通过两个变量设置样式标签中的宽度和高度值 这两个变量从相应的函数获取它们的值 var my width ge
  • epoll(epoll_wait等)可用于iOS吗?

    我正着手将一些现有的 POSIX 兼容代码移植到 iOS 据我所知 pthreads 可用 良好 但编译器未找到 iOS 上可以使用 epoll 吗 No epoll是 Linux 特定的系统调用 达尔文内核上最接近的等价物是kqueue
  • 彩信发送/接收日期始终为 1970 年

    从下面的代码我可以得到彩信 但日期总是错误的 可能是我在转换时做错了什么 Cursor cursor activity getContentResolver query Uri parse content mms null null nul
  • Android gradle:共享产品风格之间的依赖关系

    我的应用程序中有 3 种产品口味 flavor1 flavor2 flavor3 flavor1 和flavor2 共享一些与广告相关的依赖项 有没有办法将与广告相关的依赖项捆绑到 gradle 维度或配置 并将其添加到flavor1 和f
  • 渲染视图到视图寻呼机 - 优化方式

    在我的应用程序中 我使用以下方法来渲染 生成视图寻呼机的视图 是的 它工作正常并且符合预期 注意 但在这里我看到这种方法必须在 Android 资源 与设备相关 方面付出很多努力 我想找出任何优化的方法来做到这一点 有吗 建议我还是上面的好
  • Flot Charts - 在单个 html 页面中处理多个 flot

    我有一个针对单个图表实现的显示 并希望扩展该解决方案 以便 3 个图表具有相同的属性 具体来说 我想启用选择缩放 双击以重置显示 我希望该系列的图例是可单击的 以便每次单击该系列都会打开 关闭 我成功地实现了它们基于以前的帖子 这是一个在单
  • 是否可以在 Tizen 操作系统设备上安装 Android 应用程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一个 Android 应用程序 我想将其安装在基于 Tizen 操作系统的设备上 例如三星 z1 或三星手表 我对Tizen了解不多 您能否解释一下现有的 Android 应用程
  • 如何将多边形修改为孔(SpatialPolygons)并更改其槽

    Edit 正如 Edzer Pebesma 在评论中所建议的 向多边形添加孔的推荐方法不是修改槽 而是重建多边形 如图所示在这个相关问题中 原问题 在以下人员的帮助下SpatialPolygons class我尝试将一个多边形修改为另一个多
  • 如何识别用户代理是否是Windows 8平板电脑?

    我有一个网络应用程序 在我的 JavaScript 中 我通过用户代理字符串识别设备 如下所示 android navigator userAgent toLowerCase indexOf android iOS navigator pl
  • 如何在 NEST2 中更新 Elasticsearch 文档

    我已将代码移植到 NEST 2 0 和 Elasticsearch 2 0 我需要找到一种方法来更新已存储到 ES2 中的文档 我当时用的是部分对象技术 elastic Update
  • 如何使用 ADO 和 JavaScript 获取受语句影响的行数?

    我在用着ADO在 JScript Microsoft JavaScript 方言 Windows 脚本宿主脚本中更新 SQL Server 表 我想获取受脚本中更新影响的行数 但 JavaScript 没有引用传递 因此我无法执行通常的操作
  • 在 Chrome Javascript API 中分块下载文件?

    Chrome Javascript API 是否支持同时下载多个块的文件 例如在下载管理器中 简短的回答 不 没有特殊支持 有一个专门的chrome downloadsAPI 但它与普通 Chrome 下载的机制相同 即单流 长答案 你可以
  • 如何将对象转换为 int

    java中如何将对象转换为int 如果您确定该对象是Integer int i Integer object 或者 从 Java 7 开始 您可以等效地编写 int i int object 当心 它可能会抛出一个ClassCastExce
  • 如何在 ASP.NET 表单上使用 javascript 调用回发

    我有一个带有文本框和按钮的网络表单 我想在 ENTER 键后单击文本框 postbak 表单 我正在使用下一个代码 onkeypress if event keyCode 13 alert 2 WebForm DoPostBackWithO
  • 解析错误:语法错误,我的 PHP 代码中出现意外的文件结尾

    我收到一个错误 Parse error syntax error unexpected end of file in the line 有了这个代码 h2 Welcome Administrator h2 a href Upload Fil
  • Magento API REST 客户未重定向到身份验证页面

    我正在尝试通过客户帐户访问产品 为了实现这一点 我使用来自的示例代码oauth customer phpmagento 文档页面 Everything is okay and working fine but the thing I am
  • 为什么在表达式后添加尾随逗号会创建元组?

    为什么在表达式后添加尾随逗号会创建tuple与表达式的值 例如 在这段代码中 gt gt gt abc mystring gt gt gt print abc mystring 为什么打印输出 mystring 而且不仅仅是mystring
  • 发布具有几千个值的表单

    我有一个基于语言的应用程序 其中包含每种语言的程序每个部分的语言文件 例如 en inc php lang main this is my main string 有些文件包含超过 2000 个变量 我正在创建的 Web 表单中更新翻译 我
  • Javascript 中的类型强制到底是什么?

    Javascript 中的类型强制到底是什么 例如 关于使用 代替 类型强制意味着当运算符的操作数是不同类型时 其中一个操作数将转换为另一个操作数类型的 等效 值 例如 如果您这样做 boolean integer 布尔操作数将转换为整数
  • 如何在 JFrame 内的 JPanel 内绘制形状

    我在 JPanel 内部绘制已使用 Netbeans GUI 添加的形状时遇到问题 现在 我不知道在哪里添加用于在该 JPanel 内绘制圆的代码 以及如何在现在空着的 JPanel 中插入和调用它 等待绘制该形状 我已经将目标 JPane