将 JLayeredPane 添加到 JPanel

2024-03-13

我试图将 JLayeredPane 添加到 JPanel,然后将图像(JLabel 图标)和按钮添加到 JLayeredPane,但两者都没有显示。我已经测试了没有按钮和分层窗格的图像,所以我知道这是可行的。这是我正在使用的一些代码。我是否遗漏或做错了什么?


public class MyClass extends JPanel 
{
    private JLayeredPane layeredPane;
    private JLabel imageContainer = new JLabel();
    private JButton info = new JButton("i");

    MyClass(ImageIcon image)
    {
        super();

        this.imageContainer.setIcon(image);

        this.layeredPane = new JLayeredPane();
        layeredPane.setPreferredSize(new Dimension(300, 300));
        layeredPane.add(imageContainer, new Integer(50));
        layeredPane.add(info, new Integer(100));

        this.add(layeredPane);
    }
}       


来自tutorial http://java.sun.com/docs/books/tutorial/uiswing/components/layeredpane.html#layout

默认情况下,分层窗格没有布局管理器。这意味着您通常必须编写代码来定位放置在分层窗格中的组件并调整其大小。

查看代码的更改:

import java.awt.*;
import javax.swing.*;
public class MyClass extends JPanel {
    private JLayeredPane layeredPane;
    private JLabel imageContainer = new JLabel();
    private JButton info = new JButton("i");

    MyClass(ImageIcon image) {
        super();

        this.imageContainer.setIcon(image);

        this.layeredPane = new JLayeredPane();
        layeredPane.setPreferredSize(new Dimension(300, 300));
        layeredPane.add(imageContainer, new Integer(50));
        layeredPane.add(info, new Integer(100));
        this.add(layeredPane);
        // CHANGED CODE
        // Manually set layout the components. 
        imageContainer.setBounds( 0, 0,  
                                  image.getIconWidth(),
                                  image.getIconHeight() ); 
        info.setBounds( 200, 00,  50, 40 );
    }
    public static void main( String [] args ) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.add( new MyClass( new ImageIcon("logo.png")  ) );
        frame.pack();
        frame.setVisible( true );
    }
}       

补充笔记:

1)(在我看来)最好将左大括号放在同一行。这就是大多数 Java 代码的样子。

2)如果您不是真正创建子类,请避免从 JPanel(或任何其他组件)继承。您可以直接使用它而无需继承(除非您确实正在创建一个新组件。

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

将 JLayeredPane 添加到 JPanel 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • “java.io.IOException:连接超时”和“SocketTimeoutException:读取超时”之间有什么区别

    如果我设置一个套接字 SoTimeout 并从中读取 当读取时间超过超时限制时 我会收到 SocketTimeoutException 读取超时 这是我的例子中的堆栈 java net SocketTimeoutException Read
  • 使用 WebDriver 单击新打开的选项卡中的链接

    有人可以在这种情况下帮助我吗 场景是 有一个网页 我仅在新选项卡中打开所有指定的链接 现在我尝试单击新打开的选项卡中的任何一个链接 在下面尝试过 但它仅单击主 第一个选项卡中的一个链接 而不是在新选项卡中 new Actions drive
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • ZoneInfoNotFoundError:“未找到带有 utc 密钥的时区”

    当尝试在浏览器上加载我的网页时 我收到了消息 服务器发生错误 请联系管理员 当我回去检查我的终端时 我看到了这条消息 zoneinfo common ZoneInfoNotFoundError 未找到具有关键 UTC 的时区 我检查过但不知
  • 如何使用变量来避免为工作表中的所有列创建一组变量?

    当单元格更改时 我试图让我的工作表在两个方向上自动重新计算计划内的一组日期 该代码工作正常 但我需要添加更多列 而且我真的不想多次复制 粘贴 查找 替换负载 我相当确定我可以使用变量来做到这一点 只需查找列标识符并以某种方式将其输入代码中
  • 强制停止在外部线程上运行的 Java Files.copy()

    这里的答案似乎是 Java 8 之前的有效解决方案 如何在Java中取消Files copy https stackoverflow com q 17083896 但现在不行了 因为ExtendedCopyOption INTERRUPTI
  • Mysql查找文本中的关键字

    我有一个包含 10k 个关键字的 Mysql InnoDB 表 我想将它们与多个文本进行匹配 有些关键字有多个单词 我只想要完全匹配 例子 关键词 棕色狐狸 懒猫 狗 狐狸 兔子 文字 敏捷的棕色狐狸跳过了懒狗 我希望返回查询 棕色狐狸 狗
  • Apache RewriteCond(子域)

    我正在尝试将对子域的请求重定向到主域 IE xxx domain com blah xyz gt domain com blah xyz 我的重写条件工作正常xxx domain com但对于类似的事情xxx domain com 123
  • Android:由于进度对话框,活动已泄漏窗口?

    我正在开发我的第一个 Android 应用程序 我想在用户单击我的应用程序中的登录按钮时显示进度对话框 所以我在应用程序中集成了 asynctask 所有操作 例如登录注销 都成功完成 但问题是 成功登录后 这给了我错误 例如 LoginA
  • 如何在 Github 中发出单独的拉取请求而不是“堆叠”它们?

    我对此没有任何进展 尝试提出 2 个单独的拉取请求 也许有人可以指出我出了什么问题 这是我正在做的事情 Fork repo FOO 并克隆到我的机器 git clone https github com myself FOO git 设置上
  • 使用 Javascript 获取 IE 浏览器版本 [重复]

    这个问题在这里已经有答案了 我正在使用以下代码来获取系统中 IE 的版本 var browser navigator appName var b version navigator appVersion var version parseF
  • Xamarin 便携式 .NETStandard 1.5 单元测试

    I created a portable class library and then targeted it at NETStandard 1 5 from the project properties I then created a
  • 如何在 SwiftUI 中设置 TextField 的键盘类型?

    我似乎找不到任何信息或弄清楚如何在 SwiftUI 的 TextField 上设置键盘类型 如果能够启用安全文本属性 隐藏密码等 那就太好了 这篇文章展示了如何 包装 UITextField 但如果不需要 我宁愿不使用任何 UI 控件 如何
  • 使用引用该对象的基类指针向量打印派生类对象

    如何制作这个指针向量 然后正确打印 Derived1 对象和 Derived2 对象 即使我在派生类中包含 我该怎么做才能使程序从 Derived1 类或 Derived2 类中获取 out lt lt Base temp 在我的操作员的定
  • Spring Integration SpEL 与注释有关的问题

    我的 fileMessageProvider 作为 InboundChannelAdapter value files poller Poller fixedDelay my poller interval maxMessagesPerPo
  • 如何初始化空的 Redux 存储?

    我收到这个错误 TypeError Cannot destructure property store of useReduxContext as it is null 尝试初始化slice ts像这样 interface StateTyp
  • 如何访问包内的meteor包名?

    我正在创建一个包 并希望在包代码中动态使用包的名称 即用于登录我的 log js 文件 如何访问定义的变量包 js Package describe name author packagename 由于我无法确定包名称是否正在更改为分离等
  • 现在哪些浏览器支持 window.postMessage 调用?

    支持的浏览器有哪些window postMessage现在打电话 我正在寻找原生支持它的浏览器 而不是通过 iFrame hack 我可以使用跨文档消息传递吗 http caniuse com feat x doc messaging FF
  • 将 Google 计算/云服务器更改为 SSD 永久磁盘

    我有一个在标准永久磁盘上运行的实时生产网站 如何安全地将其升级为 SSD 磁盘 有没有一种简单的方法可以使用仪表板而不是控制台命令来完成此操作 需要明确的是 将实例关闭 10 分钟左右就可以了 这行得通吗 快照实例 克隆实例 使用快照 创建
  • 从 VARCHAR 转换为 INT - MySQL

    我当前的数据 SELECT PROD CODE FROM PRODUCT is PROD CODE 2 5 7 8 22 10 9 11 我已经尝试了所有四个查询 但没有一个起作用 Ref http dev mysql com doc re
  • 如何使用包含斜杠字符的参数定义 Laravel 路由

    我想定义一个带有包含斜杠的参数的路由 像这样的性格example com view abc 02 where abc 02是参数 如何防止 Laravel 将斜杠读取为下一个路由参数的分隔符 因此我得到了404 not found erro
  • 如何将sql原生查询结果映射到spring jpa存储库中的DTO?

    您好 我想要实现的是将 SQL 本机查询结果映射到 java spring jpa 存储库中的 DTO 中 我该如何正确执行此操作 我尝试了几个代码 但它不起作用 这是我尝试过的 第一次尝试 Repository public interf
  • 将 JLayeredPane 添加到 JPanel

    我试图将 JLayeredPane 添加到 JPanel 然后将图像 JLabel 图标 和按钮添加到 JLayeredPane 但两者都没有显示 我已经测试了没有按钮和分层窗格的图像 所以我知道这是可行的 这是我正在使用的一些代码 我是否