JPanel 不绘画,JFrame 保持空白

2023-12-06

我正在开发一款类似于数字口袋妖怪卡牌的游戏。当我尝试绘制任何图像时,JFrame 仍为空。这可能是一个简单的错误,但我一直无法找到解决方案。在 Stack Overflow 上,我看到了很多像我这样的问题,尽管他们的解决方案不适用于我的代码。这是代码: JFrame 的类:

import javax.swing.JFrame;


public class Rocks extends JFrame{

public Rocks(){
    setVisible(true);
    setTitle("Rocks Card Game");
    setSize(1200,297);
    add(new Display());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
    new Rocks();
}

}

JPanel 类:

    import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;


public class Display extends JPanel{
    Image granite;
    public Display(){
        granite = new ImageIcon("C:\\Users\\Raj\\Pictures\\Granite.png").getImage();
        setBackground(Color.black);
    }
    public void paint(Graphics g){
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(granite,0,0,null);
    }
}

有延长的理由吗JFrame如果你没有,那就不要。组合优于继承。正如@camickr所说,不需要自定义绘画,你可以使用JLabel并打电话setIcon.

public class Rocks{

private JFrame frame;

public Rocks(){
    frame = new JFrame();
    frame.setTitle("Rocks Card Game");
    frame.setSize(1200,297);
    //frame.add(new Display());
    //as camickr comment
    JLabel label = new JLabel(new ImageIcon("C:\\Users\\Raj\\Pictures\\Granite.png"));
    frame.add(label);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack(); // size components
    frame.setVisible(true); // make it visible
}
public static void main(String[] args) {
    new Rocks();
}

}

还有一件事你必须看看Swing 程序应该重写paintComponent() 而不是重写paint()

所以(如果你仍然想使用面板)像这样改变你的面板类

public class Display extends JPanel{
    Image granite;
    public Display(){
        granite = new ImageIcon("C:\\Users\\Raj\\Pictures\\Granite.png").getImage();
        setBackground(Color.black);
    }
    @Override // always add override annotation
    public void paintComponent(Graphics g){
        super.paintComponent(g); // always call super first
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(granite,0,0,this);
    }
}

阅读更多 :在 AWT 和 Swing 组件中绘制

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

JPanel 不绘画,JFrame 保持空白 的相关文章

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

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 使用 AsyncTask 传递值

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

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • Apache Camel 和 Web 服务

    我试图了解如何将 Apache Camel 与任何提供 WSDL 的 Web 服务集成以生成其类 然后调用他的方法来返回一些请求 我研究了一些关于骆驼弹簧WS and 骆驼 CXF包 正如我所看到的 Spring Web 服务组件不支持使用
  • R - 如何创建重复的自定义 Ifelse 函数

    我非常熟悉 R 的标准 ifelse 语句 以及如何创建嵌套的 ifelse 语句 然而 我想创建一个 更好 的版本 这样我就不必多次复制 粘贴 ifelse 以这个嵌套的 ifelse 语句为例 df lt data frame b 1
  • Tabhost底部边框线android

    截屏 注意到选项卡下方的那条小灰线 选定的选项卡除外 我该如何改变 改变它 它会是 FrameLayout tabHost 或 TabWidget 的一部分吗 我只是找不到改变或删除这条小灰线的方法 Thanks 这是删除灰线的更简单的方法
  • 切换 JPanel 和 keyListener

    我正在开发一款游戏 首先进入主屏幕 有多种选择 例如单人游戏 双人游戏 积分等 我有一个大问题 如果我单击菜单中的按钮 不是JButton the JPanels 切换 但 keyListener 丢失 这Keylistener与游戏代码在
  • 无法登录管理站点。返回页面未找到错误

    我正在尝试通过 a2hosting 共享托管计划托管我的网站 我被告知使用 cpanel 创建一个 virtualenv 然后使用乘客来运行 django 我的virtualenv文件夹和项目文件夹位于根目录中 设置完所有内容并运行coll
  • VB6 中的 LIKE 关键字

    我看到一个示例代码如下 If numb Like 0 9 Then End If Here numb是一个包含一个字符的字符串 VB6中的LIKE关键字是什么 有可用的文档吗 Like 运算符 Visual Basic for Applic
  • History.js 插件 - 如何使用

    我需要使用history js 插件 我整理了一个简短的页面来测试功能 http www salesmelbourne com 目前我正在努力解决以下问题 后退 前进按钮不会重新加载 AJAX div 这是我没有添加的额外的 History
  • 如何将 JavaScript 日期初始化为特定时区

    我将特定时区的日期时间作为字符串 我想将其转换为本地时间 但是 我不知道如何在 Date 对象中设置时区 例如 我有Feb 28 2013 7 00 PM ET 那我就可以 var mydate new Date mydate setFul
  • 如何阻止 Iframe 调用

    最近 我的完整网站被另外两个域在 iframe 中调用 我想阻止其他试图在 iframe 中显示我的网站的网站 我如何通过 htaccess 阻止它 您可以在标题 X Frame Options Deny 中设置变量 所有现代浏览器都支持
  • dart flutter 中 DateFormat 中的 tryParse

    我想要tryParse多种日期格式 tryParse方法可在DateTime但不在DateFormat 我想用DateFormat因为我想解析多种格式 如果我使用Parse方法然后我必须使用try catch block 目前我正在解析下面
  • R 中的行矩阵乘法

    我有一个维度为 1 亿条记录和 100 列的矩阵 现在我想将该矩阵乘以行 我的矩阵乘法示例代码是 df lt as matrix mtcars result lt apply df 1 prod 在我的例子中 上面的语法非常慢 I trie
  • keras 自动编码器与 PCA

    我正在玩一个玩具示例来理解 PCA 与 keras 自动编码器 我有以下代码来理解PCA import numpy as np import matplotlib pyplot as plt from mpl toolkits mplot3
  • jquery ajax 帖子说 xxx 不允许 Access-Control-Allow-Origin

    我试图使用 AJAX 调用 eBay FindProducts API post请求 但遇到以下错误 XMLHttpRequest 无法加载http open api ebay com shopping callname FindProdu
  • EntityFramework .net 4 用简单的方法更新实体

    我正在看这个问题 ADO net 实体框架 仅更新分离实体上的某些属性 这对我来说是一个很大的帮助 我现在知道在对其进行更改之前需要附加一个实体 但我该怎么做 我有一个 MVC 网站 一个客户更新页面 其中包含以下字段 ID 名称 地址等
  • C++ 全局重载运算符= [重复]

    这个问题在这里已经有答案了 可能的重复 运算符 必须是非静态成员 是什么意思 C Hi 我有以下代码 Header file struct dataRecord size t id char name gcNameLength void o
  • OpenGL 透明度无法正常工作

    我的项目的透明度存在问题 正如您所看到的 透明度对于其他对象来说效果很好 您可以看到树叶后面的犀牛 但问题出在树本身 当有两个分支并且其中一个比另一个更近时 较远的一个是不可见的 与后备箱相同 透明度对对象本身不起作用 这是我在创建纹理时使
  • 如何更改悬停时的内容

    我一直在研究这个 我认为这会很简单 我想做的是将鼠标悬停在 新 标签上 进入悬停状态后 仅使用 CSS 将内容从 NEW 更改为 ADD body font family Arial Helvetica sans serif item wi
  • 在Java中找到二次回归曲线的最佳方法

    我有三组数据 例如 x y 4 0 6 60 8 0 有谁知道任何 有效的 Java 代码可以给我返回 a b 和 c 的值 系数 我假设您想要这种形式的公式 y a x 2 b x c 如果只有三个点 您可以使用以下公式描述经过所有三个点
  • 在 XHR 中使用 multipart/form-data 作为 Content-Type 时收到“400 Bad Request”

    我有一个发送一些数据的 AJAX 请求 数据尊重 multipart form data规格 我面临的问题是浏览器将 Content Type 标头设置为 text plain 它应该是 multipart form data 我尝试这样做
  • JPanel 不绘画,JFrame 保持空白

    我正在开发一款类似于数字口袋妖怪卡牌的游戏 当我尝试绘制任何图像时 JFrame 仍为空 这可能是一个简单的错误 但我一直无法找到解决方案 在 Stack Overflow 上 我看到了很多像我这样的问题 尽管他们的解决方案不适用于我的代码