gpt4 book ai didi

java - 我怎样才能实现新的 JFrame 功能

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:53 25 4
gpt4 key购买 nike

我正在尝试删除 JFrame 顶部的拖动条。我想保留此栏上出现的最小化、最大化和关闭选项。我在想的是删除栏(和图标)。然后将图标添加为嵌入图像,实现 JFrame Action 监听器。这也有必要与 JInternalFrames 一起使用。任何帮助将不胜感激。

最佳答案

您需要退后一步,了解 Swing 的工作原理。

当您创建 JFrame 时,Swing 会使用框架的操作系统小部件。您看到的标题栏是操作系统组件的一部分,您无法使用 Swing 直接控制它。您可以如前所述使用 setUndecorated(false) 隐藏框架的标题栏(和边框)。在这种情况下,您失去了与标题栏(拖动和访问所有按钮)和边框(调整大小)相关的所有功能。因此,如果您需要这些功能中的任何一个,您需要自己重新创建。

另一方面,您可以使用:

JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();

Swing 将为您构建标题栏和边框,并添加回所有默认功能。因此,如果您想要防止拖动,您现在需要检查 JFrame 的所有组件以找到代表标题栏的组件。找到此组件后,您可以从组件中删除 MouseMotionListeners 以防止拖动。这样标题栏将仍然存在并且按钮将处于 Activity 状态,但拖动将被禁用。我猜想将所有功能添加到未装饰的框架中会更容易。

正如您已经意识到的那样,JInternalFrame 是一个完全用 Swing 编写的组件,因此您可以访问子组件,这基本上也是我为 JFrame 建议的方法。

关于java - 我怎样才能实现新的 JFrame 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1942264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com