java Swing 背景图像

2024-03-12

我正在使用 JFrame,并且在框架上保留了背景图像。现在的问题是图像的大小小于框架的大小,所以我必须在窗口的空白部分再次保留相同的图像。如果用户单击最大化按钮,我可能必须在运行时将图像放在框架的空白区域。谁能告诉我如何实现这个目标?


听起来好像您在谈论平铺与拉伸,尽管尚不清楚您想要哪种行为。

该程序有两个示例:

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {
    public static void main(String[] args) throws IOException {
        final Image image = ImageIO.read(new URL("http://sstatic.net/so/img/logo.png"));
        final JFrame frame = new JFrame();
        frame.add(new ImagePanel(image));
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

@SuppressWarnings("serial")
class ImagePanel extends JPanel {
    private Image image;
    private boolean tile;

    ImagePanel(Image image) {
        this.image = image;
        this.tile = false;
        final JCheckBox checkBox = new JCheckBox();
        checkBox.setAction(new AbstractAction("Tile") {
            public void actionPerformed(ActionEvent e) {
                tile = checkBox.isSelected();
                repaint();
            }
        });
        add(checkBox, BorderLayout.SOUTH);
    };

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (tile) {
            int iw = image.getWidth(this);
            int ih = image.getHeight(this);
            if (iw > 0 && ih > 0) {
                for (int x = 0; x < getWidth(); x += iw) {
                    for (int y = 0; y < getHeight(); y += ih) {
                        g.drawImage(image, x, y, iw, ih, this);
                    }
                }
            }
        } else {
            g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java Swing 背景图像 的相关文章

  • Mockito 匹配器和基元数组

    有了 Mockito 我想verify 方法调用byte 在它的参数列表中 但我没有找到如何写这个 myMethod byte 我只想要类似的东西anyByteArray 如何使用 Mockito 做到这一点 我会尝试any byte cl
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • Java 密钥库 - 以编程方式从密钥库文件中选择要使用的证书

    我有一个 java 密钥库文件 其中包含多个客户端证书 我希望在 Java 应用程序中仅选择其中一个证书来连接到服务 有没有一种简单的方法可以做到这一点 到目前为止 我找到解决方案的唯一方法是使用原始密钥库文件中的客户端证书详细信息 通过其
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • 无法解析 ListView 适配器中的 getSystemService 方法

    我正在研究约翰霍顿的Android 编程初学者 目前正在尝试创建一个笔记应用程序 霍顿刚刚介绍ListViews 但是 我遇到了麻烦adapter class public class NoteAdapter extends BaseAda
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • 要导入什么才能使用@SuppressFBWarnings?

    要使用 SuppressFBWarnings 需要导入什么 我通过帮助 安装新软件安装了 findbugs 插件 当我输入 import edu 时 我无法按 ctrl space 来获取选项 Example try String t nu
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • 自 Java 7 以来 HttpServer 延迟 1 秒

    我们正在使用内部HttpServer项目中的类 用于通过 HTTP 在客户端和服务器之间交换数据 当我们切换到 Java 7 时 我们意识到结果交付存在延迟 我们可以将问题简化为以下示例 Class EchoServer创建上下文 echo
  • ImageIO read() 和 write() 操作后 GIF 图像变得错误

    我有这个代码 它只是读取 GIF 文件 用背景重新绘制它 然后输出到新的 GIF 文件 问题是结果文件变得奇怪 我不知道为什么它的质量变得很差 JPG 文件不会出现此问题 如何修复它 import java awt Color import
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • Eclipse:对 Java 1.7 的失望(未绑定库)

    我在全新安装的 Eclipse 中处理全新项目时遇到问题 重现步骤 下载此版本的 Eclipse http www eclipse org downloads packages eclipse ide java developers hel
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • 将项目导入 Eclipse 后出现“必须重写超类方法”错误

    任何时候我必须将我的项目重新导入到 Eclipse 中 如果我重新安装了 Eclipse 或者更改了项目的位置 几乎全部我的重写方法的格式不正确 导致错误 该方法必须重写超类方法 值得注意的是 无论出于何种原因 Android 项目中方法参
  • Eclipse 错误:“设置构建路径”遇到错误

    我正在使用一个名为 jtwitter 的 API 它有一个 jar 文件 jtwitter jar 我一直在使用它并使用 git 维护它 我把代码托管在github上 有些天 我没有碰过它的代码 今天 当我克隆我的 git repo 时 实
  • 如何使用二叉树中的递归来完成回溯

    我正在尝试插入一个二进制节点 我的代码很复杂 没有希望挽救它 所以我计划重写它 基本上我没有考虑回溯 也没有仔细考虑算法 我正在尝试使用顺序遍历插入二进制节点 但我不明白应该如何回溯 D B E A C F 我如何搜索根 D 的左子树 然后
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • 使用相对于配置文件的路径引用 Spring 属性文件

    我正在将属性从 Spring 配置文件内部移动到单独的属性文件中 这包含在配置文件中
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明

随机推荐

  • Jquery 隔离

    我的公司有一个 Web 应用程序 其中包含纯 JavaScript 它以自己的方式使用 美元符号 如下所示 function e return document getElementById e 问题是当我将 jquery 嵌入到页面时发生
  • 如何限制受保护方法只能访问子类

    我们如何限制对任何受保护方法的访问仅限于任何包中的子类 而不是同一包中的类 如果任何类不是子类并且位于同一包中 它也必须抛出异常 例如 受保护的方法 编辑 有什么方法可以检查调用类名实例 然后我们可以使用进行验证实例化 这不可能 您可以选择
  • 依赖注入容器?它有什么作用?

    我一直在阅读有关 DI 的内容 它似乎是一个足够简单的概念 我没有得到的是容器 假设我想创建自己的容器 使用像 检测 这样的动词 我不明白容器如何 检测 创建了新的依赖对象并知道注入它的依赖项 对我来说 这个容器就像是一个光荣的工厂 谁能解
  • Azure静态Web应用程序环境变量

    我正在尝试通过 Azure Static Web 应用程序发布 Gatsbyjs 我有一个插件 gatsby source contentful 我需要传递如下变量 resolve gatsby source contentful opti
  • 如何调试 vscode 扩展的 WebView javascript

    我正在构建 vscode 扩展 但无法在 WebView 中的 Javascript 中设置断点 即使 WebView 是一个单独的进程 有没有办法调试 Javascript 具体来说 我正在尝试合并 Telerik TreeView Tr
  • OpenCV 3.4.3 中对“cv::String::deallocate()”错误的未定义引用[重复]

    这个问题在这里已经有答案了 我最近安装了 OpenCV 3 4 3 但 OpenCV 中的一些库没有运行 这是我的示例代码 include
  • 将 Youtube Gdata json 解析为 ListView

    我一直在尝试在 Android 中找到 解析 Youtube Gdata JSON 的工作示例来填充列表视图 我一直在阅读这个问题 https stackoverflow com questions 9555511 android pars
  • RxJava 并行获取 Observables

    我需要一些帮助来在 RxJava 中实现并行异步调用 我选择了一个简单的用例 其中第一个调用获取 而不是搜索 要显示的产品列表 平铺 随后的调用将获取 A 评论和 B 产品图像 经过几次尝试我到达了这个地方 1 Observable
  • 找不到实体框架 4 注释

    我正在尝试使用注释将 POCO 类映射到我的数据库表 我需要使用Table注释来指定我的表的名称 但我无法解析Table注解 注 我导入了System Data Entity命名空间 但它不起作用 我必须导入哪个命名空间才能使用 EF 注释
  • Flutter Admob AppID 使用 Android 还是 iOS?

    当我们在admob控制台中制作AdMob应用程序时 我们可以选择Android或iOS应用程序 这意味着有 2 个不同的 ID 我们应该在 Flutter AdMob 插件中使用哪一个 FirebaseAdMob instance init
  • 如何将 Rails 视图助手提取到 gem 中?

    我有一组经常使用的 Rails 视图助手 并且想将它们打包成一个 gem 这样我就可以在 Gemfile 中添加一行 并从我的视图中访问这些助手 我在使用 Bundler 和 Jeweler 之前已经创建了 gem 但是 我不太清楚如何在
  • 从回溯的角度解释BFS和DFS

    关于深度优先搜索的维基百科 深度优先搜索 DFS 是一种 遍历或搜索的算法 树 树结构或图 一 从根开始 选择一些 节点作为图例中的根 并尽可能地探索回溯之前的每个分支 那么什么是广度优先搜索呢 一种选择起始点的算法 节点 检查所有节点回溯
  • 通过代码隐藏加载silverlight到aspx页面

    我需要通过单击该页面上的按钮在 aspx 页面的一部分中加载 silverlight 应用程序 一些初始化参数需要根据单击按钮时主机页面上的用户输入传递到 silverlight 应用程序 怎么做 我想我需要从代码隐藏创建 silverli
  • python中用于列表操作的plus和append有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Python的append 与列表上的 运算符 为什么它们会给出不同的结果 https stackoverflow com questions 2022031 python append vs ope
  • 如何查看 nginx 尝试访问文件的实际文件路径?

    现在我已经设置了 Nginx 来提供我确信是有效的文件路径的服务 但是 它给了我一个 404 未找到 我看过 var log nginx access log它向我展示了 05 Oct 2016 19 15 50 0500 GET menu
  • PagedListAdapter 不使用 DiffUtil 使数据无效

    每次我调用无效数据时 我的 DIFF UTIL 都不会被使用 日志未显示 整个列表已更新为新数据 导致屏幕移动位置等 不确定这里的问题是什么 I have PagedListAdapter with a LiveData
  • 平方根元函数?

    是否可以使用具有以下签名的元函数计算整数的平方根 template
  • Pandas DataFrame 删除 groupby 中的行

    我有一个包含三列的 DataFrameDate Advertiser和身份证 我首先对数据进行分组 看看某些广告商的列是否太小 例如当count 少于 500 然后我想将这些行删除到组表中 df groupby Date Advertise
  • android 如何动态改变进度条背景颜色

    我想动态改变android中进度条的背景颜色 我遵循本教程页面末尾附近的 奖励 部分 http colintmiller com 2010 10 how to add text over a progress bar on android
  • java Swing 背景图像

    我正在使用 JFrame 并且在框架上保留了背景图像 现在的问题是图像的大小小于框架的大小 所以我必须在窗口的空白部分再次保留相同的图像 如果用户单击最大化按钮 我可能必须在运行时将图像放在框架的空白区域 谁能告诉我如何实现这个目标 听起来