问题标签 [glasspane]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2085 浏览

events - JavaFX:实现将事件转发到底层控件的类似玻璃窗格的鼠标/触摸事件接收器的最佳实践

我的挑战是以下情况:

我想在整个应用程序上添加一个不可见(不透明度 0)窗格,它接收所有鼠标和触摸事件。当事件发生时,它会重置某种活动计时器。

我的第一种方法(没有这样的窗格)是在根窗格中添加侦听器,效果很好。但是......按钮会消耗所有事件,因此计时器不会被重置。

在我看来,玻璃窗格解决方案将是一个更好的解决方案,但我找不到将接收到的鼠标和触摸事件转发到底层控件的解决方案。

简而言之:窗格拦截鼠标事件(触发重置计时器),然后单击底层按钮。

请问有什么想法吗?

编辑第一个解决方案 我找到了将 EventDispatcher 添加到我的根窗格的解决方案,它会在例如按下鼠标时触发自定义事件。所以没有玻璃板,但它有效:

0 投票
2 回答
185 浏览

java - 如何强制重新粉刷玻璃板?

我有一个 Swing 应用程序,地图上有一个玻璃窗格。

它在某些位置绘制点。当我单击地图上的某个位置时,玻璃窗格收到消息CONTROLLER_NEW_POLYGON_MARK,我希望在事件数据中指定的位置显示一个额外的点(请参阅 参考资料MyGlassPane.propertyChange)。

玻璃窗格类称为MyGlassPane。使用我验证过的调试器,addPointToMark它实际上是在propertyChange.

但屏幕上没有出现额外的点。

如何更改代码以便在触发PointSetMarkingGlassPane.paintComponent事件 () 时调用它?IEventBus.CONTROLLER_NEW_POLYGON_MARK

0 投票
0 回答
337 浏览

java - jFlashPlayer 不适用于 glassPane、Java

我正在使用 jFlashPlayer(目前已被 VersaEdge Software 停产)。

我在 jWindow 中显示 FlashPanel 并希望在其上放置一个 glassPane 以在 Flash 图像上绘制,但是当 FlashPanel 可见时 glassPane 不起作用。当 FlashPanel 不可见/未启动时,glassPane 工作正常。

代码的相关部分如下:

在哪里

(直接取自他们提供的示例)和

此代码在两个监视器上运行。一个监视器用于控制 Flash 文件(代码未显示),另一个监视器(这个)用于显示它。glassPane 在另一台显示器上工作正常,并且在这台显示器上工作 IFF FlashPanel 未启动/不可见。

Flash 文件运行良好,并且可以使用提供的代码按预期工作 - 这不是我的问题。

jFlashPlayer(库等)的所有支持文件的副本可以在http://java-flash-player-jflashplayer.soft32.com找到

提前致谢!

0 投票
1 回答
367 浏览

java - Swing 在通过 glasspane 锁定解锁后进入等待状态

我正在经历一个奇怪的情况。在某些情况下(不活动超时),我必须锁定我的摆动窗口(和任何子窗口),并且在通过有效凭据再次解锁后,我需要将它们全部解锁。

我正在使用 glasspane 敌人,我的两个功能如下

主锁模块

分锁方式

解锁主要方法

公共无效解锁(){锁定=假;锁定最小化 = 假;

子解锁方法

只是再次重复我的锁定和解锁确实成功发生。解锁不成功,因为解锁后我的解锁窗口上仍然有一个忙碌的光标。它和消失一样好。无用。

我从日志中看到我成功地从解锁呼叫中退出。然后我不知道帽子会导致那个忙碌的光标出现并阻止我窗口上的任何东西。

我也有这些日志,它们很好

我不确定是什么原因造成的呢?

可能的罪魁祸首和我尝试过的事情

  1. 在锁定解锁时不做无效
  2. 将 glasspane 显式设置为 null
  3. 不做任何听众的事情

所有这些都无济于事,形势依然惨淡。

有谁有过同样的经历,可以指点一下吗?

我的一个限制是我不能离开玻璃板方法,为了保持应用程序之间的同质性,我必须使用它。所以我必须让这个工作,没有其他选择。

更新

@trashgod 我已经采取了线程转储不幸的是无法附加它。我需要调查什么?最后三行是“VM Thread”prio=10 tid=0x28688000 nid=0x5e58 runnable

“VM 周期性任务线程”prio=10 tid=0x28721c00 nid=0x2bc0 等待条件

JNI 全球参考:19887

对此有什么帮助吗?我应该看什么?“VM 周期性任务线程” ?? 一些具体的州是哪一个?

我如何获得有关线程转储的帮助。我没有通过 SO,在这里超过了字符限制。

0 投票
1 回答
1072 浏览

java - 如何用一些透明层覆盖 SWT 控件或控件?

我想在我的自定义控件中实现选择功能。此控件包含一个图像,我希望图像在选择时变为蓝色。我不想按位更改图像。

是否可以在其他控件上方绘制一些半透明的蓝色矩形来模拟选择?

更新

以下代码不显示任何绘图:

0 投票
0 回答
29 浏览

java - 为光标替换清除 GlassPane

有什么方法可以清除玻璃板而无需重新粉刷其他组件?我目前正在尝试制作光标替代品,因为我无法以我想要的方式自定义真正的光标。因此,有必要经常绘制替代品。

请不要参考 API 或 Oracle 教程。我读了这两个 + 大约 2 小时的互联网搜索。谢谢你的帮助 :)

0 投票
1 回答
32 浏览

java - 循环重绘问题

我遇到了一个很大的问题。我正在编写具有以下结构的 GUI:

MainFrame(MainPanel(JScrollPane(ContentPanel(Content1,Content2,Content3))))

MainFrame 上还有一个 GlassPane。GlassPane 类中有一个计时器,它大约每 100 毫秒计时一次。

此计时器正在更新 Content1 的 JSlider 的值。JSlider 还有一个更改监听器,它将拇指的当前 X 坐标提供给 GlassPane。这些坐标用于在每个刻度线绘制一条线,如果它改变了。此行跨越 Content1、Content2 和 Content3。

我目前正在尝试通过 this.repaint()、MainPanel.repaint()、this.repaint(Rectangle)、MainPanel.repaint(Rectangle) 更新这些内容。

不幸的是,所有这些方法(甚至 repaint(Rectangle) o0 )都调用了 Content1、Content2 和 Content3 的 paintComponent 方法,从而以某种方式创建了循环重绘。我无法解释这个循环,我已经很绝望了。我会非常感谢任何帮助或建议。

我真的很想给你一些代码,但它太多了。而且我真的不知道什么会有用。

问候,玉米

0 投票
1 回答
426 浏览

java - 使 glassPane 适合 JPanel 的尺寸

堆栈溢出!

我正在做一个关于制作导航系统的项目,我们正处于开始阶段,绘制地图并自行导航。我们有一个功能,您应该能够在已经绘制的当前数据之上绘制一个正方形。我想避免在每个 mouseDragged 动作事件中重新绘制道路的所有数据。为此,我发现使用玻璃窗格将是最佳选择。

问题在于玻璃板的尺寸和它读取的坐标。当我单击 JPanel 上的某个位置(我们用来绘制)时,它知道如何以及在何处正确放大,但是当我绘制正方形时,它会在鼠标位置上方绘制特定数量的像素。这似乎是因为我的玻璃窗格尺寸与我的 JPanel 尺寸不对应。玻璃窗格似乎也覆盖了我的菜单栏,而 JPanel 本身不会读取菜单栏上发生的点击。

我想以某种方式在我的 JPanel 上安装一个玻璃板,并且我尝试了一些不同的东西。我尝试过的一件事是绘制 JR​​ootPane 而不是 JPanel,但这似乎是不可能的。然后我试图从我的 JPanel(它也有自己的类)中检索“MyGlassPane”类,并将其称为 repaint 方法,但这就是问题的根源。最近,我检索了 JPanel 本身使用或属于其中的 JRootPane,然后检索了此 JRootPane 的玻璃窗格,但似乎我添加到 JFrame 的菜单栏也是此 JRootPane 的一部分,这意味着glasspane 也覆盖了菜单栏。

这是一些非常简化的代码,涵盖了这个问题,但不包括鼠标侦听和数据绘图方面。但是,它确实显示了在菜单栏顶部绘制矩形很烦人的事实。

这是运行此代码后的相应屏幕截图。(由于此处没有活动,我无法发布直接图片)

我希望我的解释至少有点道理。我知道我的解释对于实际解决问题可能有点过于深入,但我觉得有必要让你们更多地了解我的情况,以及我需要解决方案的原因.

TL;DR:我需要一种方法来使 glassPane(从某处检索/设置)完全适合特定 JPanel 的尺寸,以便我可以为 JPanel 和 glasspane 接收相同的鼠标事件坐标。有关问题的可视化,请参见上面的代码。有没有聪明的方法来解决这个问题?设置 RootPane 玻璃窗格是我的最终想法......

提前感谢,如果有人有任何见解的话!

基鲁~

0 投票
0 回答
1150 浏览

java - Swing:如何打开新对话框并将其附加到现有框架中?

我有一个框架,有时会在其中打开一个对话框。我希望将此对话框附加到现有框架,例如,当我拖动该框架时,打开的对话框会跟随它。我听说这可能可以实现,GlassPane但我需要一些提示。现在,当我打开一个新对话框并设置它的相对位置时frame,如下所示:

在此处输入图像描述

  1. 我希望“testDialog”出现在连接到其右上角的框架旁边。
  2. 当我拖动“测试”框架时,“testDialog”会跟随它。

这是一个工作示例:

0 投票
1 回答
4082 浏览

java - 在jframe中的模糊背景上创建一个透明矩形

我在模糊背景上创建透明矩形时遇到问题。我正在尝试在glasspane. 这是我的代码片段。

其中,backBuffer 和 blurBuffer 是BufferedImage& jf = JFrame 的对象,alpha 用于不透明度。上述方法很好地创建了模糊效果。

这是在面板上创建透明矩形的代码

现在我坚持的是如何同时绘制模糊效果和透明矩形。我没有在这里发布整个代码,如果有人希望在此处查看代码,请点击链接

这是样本输出的所需图像。提前致谢。

在此处输入图像描述