问题标签 [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.

0 投票
2 回答
10236 浏览

java - 在 JFrame 上的 JPanel 内显示 JComponent

我无法在 JFrame 上的 JPanel 内显示 JComponent。

以下不起作用。

但是,如果我将 JComponent 添加到 JFrame[like frame.add(component, BorderLayout.CENTER);],它会显示内容。

有任何想法吗

0 投票
4 回答
486 浏览

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 正确定位在我导出的图像中。重新绘制组件作品。

就像这里发生了一些我无法弄清楚的双重缓冲......

想法?

0 投票
4 回答
6239 浏览

java - 我的 JComponent 的内容仅在手动调整大小后刷新

我试图弄清楚为什么当我手动拖动我的窗口时我的 JComponent 会刷新,但是当我调用 repaint 或 revalidate 时它不会刷新。数据已准备好显示,但在我手动调整大小之前它不会显示。任何人都可以就我能做什么提供一些建议,或者这听起来像是不是 Swing 问题,因为我尝试了重新绘制和重新验证?

我注意到的一件奇怪的事情是,如果我有这个代码:

如果使用第一行,则 JComponent 将自行刷新。如果我不使用或同时使用这两条线,它就不会,这对我来说似乎很奇怪。

我基本上只是将 JPanel 放在 JDesktopPane 中的 JInternalFrame 中。我正在尝试做的事情有两个主要功能。一个添加新的 JPanel,另一个尝试刷新它,以便新数据显示:

BTW parentContainer 是 JDesktopPane

0 投票
3 回答
10647 浏览

java - 防止 Java 在更新时重新绘制 JPanel 的内容

我有一个 JPanel,其中包含很多子组件。在向父 JPanel 更新\添加新组件时,我想防止它重新绘制,这如何实现?

0 投票
3 回答
1945 浏览

java - Java swing JComponent“大小”

我正在做一个需要一些自定义摆动组件的项目。到目前为止,我已经制作了一个带有一系列图像的新按钮(Java Metal 外观根本不适合我的 UI)。我已经在这个新组件上实现MouseListener了,这就是我的问题出现的地方。我的小部件在悬停时更改图像,单击等,除了我MouseListener将鼠标输入到整个GridLayout容器而不是图像中。所以我有一个大约 200*100 的图像,周围的容器大约是 400*200,当它进入该部分(甚至是它的空白部分)而不是图像上方时,该mouseEntered方法被触发。GridLayout我怎样才能使它只在我将鼠标悬停在图像上时才被触发?我尝试设置大小和边界以及其他属性无济于事。

编辑:这是我的问题的演示。正如您所看到的(有点,颜色非常相似)右下角按钮只需输入其部分即可突出显示GridlLayout。我只希望它在我看到实际图像时突出显示,而不是该GridLayout部分。

替代文字

我不会添加这些MouseListener方法,因为它们只涉及切换显示的图像。

编辑:添加代码部分

0 投票
1 回答
1178 浏览

java - 在自定义 Java 组件上正确查找帧速率

我不确定我的帧率代码是否正确,并且我无法找到我正在寻找的确切示例。

本质上我有子类java.awt.Component化,并且在paint(Graphics)方法内部我调用了我的calculateFrameRate()函数,如下所示。我不做任何增量绘图update()。这个数字似乎很高,我想知道 Component 类的固有双缓冲是否意味着调用paint的次数是渲染的两倍?我对双缓冲的东西生疏了,这可能是完全不正确的。

下面是帧率方法:

干杯,

哈米

0 投票
3 回答
5127 浏览

java - Java等待组件被绘制

我正在尝试用Java创建一个程序,该程序将一个接一个地显示一组图像,并调整每个图像的框架大小。我正在扩展 JPanel 以显示这样的图像:

}

然后在事件线程中我正在做主要工作:

在 createGUI() 中,我正在浏览一组图像:

问题是我的程序正确地调整了大小,所以图像被正确加载但它不显示任何东西。如果我只显示一张图像,它也适用于最后一张图像。我认为问题是在图像绘制完成之前调用了 Thread.sleep() 。

我怎样才能等待我的 ImagePanel 完成绘画并在那之后开始等待?还是有其他方法可以解决问题?

谢谢!莱昂蒂

0 投票
1 回答
550 浏览

java - Substance UI 和自定义 JComponent 的 TitledBorder 问题

我正在使用BorderFactory以 Substance UI 为主题的 Swing 用户界面创建带标题的边框,我遇到了下面显示的异常。我试过了LineBorder,它工作得很好,但似乎 Substance UI 以某种方式干扰了TitledBorder. 边框绘制paintComponent通过以下方式完成:

这本身可能是不正确的。我的问题本质上是如何TitledBorder在不创建父JPanel级并将其设置在其上的情况下开始工作,这似乎有点逃避。

提前感谢您的帮助。

0 投票
1 回答
52 浏览

swing - 确定何时设置 JComponent 的父级

是否有 Swing API 方法或侦听器类型可以让您知道 JComponent 的父级何时已设置或重置?

0 投票
4 回答
7737 浏览

java - 一个 Swing 组件不能添加到多个容器中吗?

我正在尝试(测试其他东西)将一个JButton引用添加到两个JPanels中来测试它,它从它添加到的第一个面板中消失了!

那么,一个 Swing 组件就不能添加到多个容器中吗?

先感谢您。