问题标签 [jcomponent]
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.
java - 在 JFrame 上的 JPanel 内显示 JComponent
我无法在 JFrame 上的 JPanel 内显示 JComponent。
以下不起作用。
但是,如果我将 JComponent 添加到 JFrame[like frame.add(component, BorderLayout.CENTER);
],它会显示内容。
有任何想法吗
java - 带有嵌入式 Swing 组件的自定义 JComponent 未定位在导出的图像中
我在尝试将自定义 Java JPanel 导出到 PNG 文件时遇到了一个有趣的问题。到目前为止,我一直在编写的组件的导出过程完美无缺。
我的 JPanel 包括自定义编写的 JComponents(例如,覆盖 paintComponent(Graphics g) 并写下我必须写的东西)。
导出过程如下所示(我拥有的扩展 JPanel):
上面的 'draw()' 方法导致使用要导出的图像的新大小重新绘制 JPanel 的所有子组件。效果很好。
我今天遇到的问题是我有一个自定义 JPanel,其中包含一些 Swing 组件(一个 JScrollPane 包装了一个 JEditorPane)。这个 JPanel 包括我的一个自定义 JComponent,然后是第二个 JComponent,上面有 JScrollPane。
大约 75% 的时间,当我执行导出时,带有 JScrollPane 的第二个 JComponent 没有正确定位在导出的图像中。它位于 Point (0, 0) 处,大小就是它在屏幕上的样子。此 JComponent 的“draw()”方法如下所示:
但是大约有 25% 的时间可以正常工作 - 这个带有滚动窗格的 JComponent 正确定位在我导出的图像中。重新绘制组件作品。
就像这里发生了一些我无法弄清楚的双重缓冲......
想法?
java - 我的 JComponent 的内容仅在手动调整大小后刷新
我试图弄清楚为什么当我手动拖动我的窗口时我的 JComponent 会刷新,但是当我调用 repaint 或 revalidate 时它不会刷新。数据已准备好显示,但在我手动调整大小之前它不会显示。任何人都可以就我能做什么提供一些建议,或者这听起来像是不是 Swing 问题,因为我尝试了重新绘制和重新验证?
我注意到的一件奇怪的事情是,如果我有这个代码:
如果使用第一行,则 JComponent 将自行刷新。如果我不使用或同时使用这两条线,它就不会,这对我来说似乎很奇怪。
我基本上只是将 JPanel 放在 JDesktopPane 中的 JInternalFrame 中。我正在尝试做的事情有两个主要功能。一个添加新的 JPanel,另一个尝试刷新它,以便新数据显示:
BTW parentContainer 是 JDesktopPane
java - 防止 Java 在更新时重新绘制 JPanel 的内容
我有一个 JPanel,其中包含很多子组件。在向父 JPanel 更新\添加新组件时,我想防止它重新绘制,这如何实现?
java - Java swing JComponent“大小”
我正在做一个需要一些自定义摆动组件的项目。到目前为止,我已经制作了一个带有一系列图像的新按钮(Java Metal 外观根本不适合我的 UI)。我已经在这个新组件上实现MouseListener
了,这就是我的问题出现的地方。我的小部件在悬停时更改图像,单击等,除了我MouseListener
将鼠标输入到整个GridLayout
容器而不是图像中。所以我有一个大约 200*100 的图像,周围的容器大约是 400*200,当它进入该部分(甚至是它的空白部分)而不是图像上方时,该mouseEntered
方法被触发。GridLayout
我怎样才能使它只在我将鼠标悬停在图像上时才被触发?我尝试设置大小和边界以及其他属性无济于事。
编辑:这是我的问题的演示。正如您所看到的(有点,颜色非常相似)右下角按钮只需输入其部分即可突出显示GridlLayout
。我只希望它在我看到实际图像时突出显示,而不是该GridLayout
部分。
我不会添加这些MouseListener
方法,因为它们只涉及切换显示的图像。
编辑:添加代码部分
java - 在自定义 Java 组件上正确查找帧速率
我不确定我的帧率代码是否正确,并且我无法找到我正在寻找的确切示例。
本质上我有子类java.awt.Component
化,并且在paint(Graphics)
方法内部我调用了我的calculateFrameRate()
函数,如下所示。我不做任何增量绘图update()
。这个数字似乎很高,我想知道 Component 类的固有双缓冲是否意味着调用paint的次数是渲染的两倍?我对双缓冲的东西生疏了,这可能是完全不正确的。
下面是帧率方法:
干杯,
哈米
java - Java等待组件被绘制
我正在尝试用Java创建一个程序,该程序将一个接一个地显示一组图像,并调整每个图像的框架大小。我正在扩展 JPanel 以显示这样的图像:
}
然后在事件线程中我正在做主要工作:
在 createGUI() 中,我正在浏览一组图像:
问题是我的程序正确地调整了大小,所以图像被正确加载但它不显示任何东西。如果我只显示一张图像,它也适用于最后一张图像。我认为问题是在图像绘制完成之前调用了 Thread.sleep() 。
我怎样才能等待我的 ImagePanel 完成绘画并在那之后开始等待?还是有其他方法可以解决问题?
谢谢!莱昂蒂
java - Substance UI 和自定义 JComponent 的 TitledBorder 问题
我正在使用BorderFactory
以 Substance UI 为主题的 Swing 用户界面创建带标题的边框,我遇到了下面显示的异常。我试过了LineBorder
,它工作得很好,但似乎 Substance UI 以某种方式干扰了TitledBorder
. 边框绘制paintComponent
通过以下方式完成:
这本身可能是不正确的。我的问题本质上是如何TitledBorder
在不创建父JPanel
级并将其设置在其上的情况下开始工作,这似乎有点逃避。
提前感谢您的帮助。
swing - 确定何时设置 JComponent 的父级
是否有 Swing API 方法或侦听器类型可以让您知道 JComponent 的父级何时已设置或重置?
java - 一个 Swing 组件不能添加到多个容器中吗?
我正在尝试(测试其他东西)将一个JButton
引用添加到两个JPanels
中来测试它,它从它添加到的第一个面板中消失了!
那么,一个 Swing 组件就不能添加到多个容器中吗?
先感谢您。