问题标签 [paintcomponent]

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 投票
3 回答
3841 浏览

java - 关于 GridLayout 和 paintComponent 方法的 Java Swing 问题

在这个程序中,我们需要创建一个 8x8 网格的“LifeCell”小部件。讲师没有提到小部件必须是对象,Shape所以我继续使用该GridLayout课程。该类GridLayout工作正常(据我所知,因为没有视觉辅助来确认。)该程序的目标是玩生命游戏,用户可以单击其中一个 LifeCell 小部件并在“状态”之间切换活着”或“死去”。

我的问题在很大程度上取决于让细胞被绘制。我的代码可能有问题,但我不能 100% 确定。

程序2.java

LifeCell.java

这是paintComponent方法:

我不需要确切的解决方案来修复它,但我正在努力让它发挥作用。

谢谢。

编辑:

我添加了更多的 Program2.java 类,明天我可以回来查看我要睡觉了,感谢所有帮助的人。

编辑#2:

当我用 8x8 每个单独的“单元”填充我的框架时,我真正的困惑是GridLayout因为缺少更好的词是 type LifeCell。我怎样才能画出每种LifeCell不同的颜色?如果这对你们有任何意义,我可以尝试尽可能多地修改它。还有camickr,我会看看那个网站,谢谢。

可以在此处找到作业,以避免与我的问题和/或代码片段有关的任何和所有混淆。

0 投票
4 回答
84469 浏览

java - 画一个圆的半径和点周围的边缘

我真的很困惑如何进行编程。如何在Java中绘制一个半径和边缘周围的圆?

我需要在 JFrame 内绘制一个圆,其半径和圆周为点。我可以数学计算如何找到边缘周围点的坐标,但我似乎无法对圆进行编程。我目前正在使用 Ellipse2D 方法,但这似乎不起作用并且不返回半径,据我了解,它不会从中心绘制圆,而是使用高度和宽度从起始坐标绘制圆。

我当前的代码在一个单独的框架上,但我需要将它添加到我现有的框架中。

0 投票
1 回答
1779 浏览

java - JPanel:实现我自己的paintComponent() 和渲染孩子都不起作用

我正在扩展一个 JPanel 来显示一个游戏板,并在底部添加一个 JEditorPane 来保存一些状态文本。不幸的是,游戏板渲染得很好,但是 JEditorPane 只是一个空白的灰色区域,直到我突出显示其中的文本,那时它将渲染突出显示的任何文本(但不是其余的)。如果我正确理解 Swing,它应该可以工作,因为 super.paintComponent(g) 应该呈现其他子项(即 JEditorPane)。告诉我,伟大的 stackoverflow,我犯了什么愚蠢的错误?

0 投票
1 回答
394 浏览

java - 非工作paintComponent方法

代码 :

编译完美,但是当我运行它时,它只显示一个表单。没有图片(或 中的任何其他操作paintComponent)显示。有什么我想念的吗?

0 投票
1 回答
2575 浏览

netbeans - 在 Net Beans 中的 JPanel 中绘制图形

是否有可能的方法来覆盖 NetBeans 中自动生成的 GUI 代码中的 paintComponent() 方法?我设法在不使用拖放组件的情况下手动绘制图表,并且我需要进行调整(例如添加单选按钮组),我发现这真的很耗时且乏味的工作。我使用 NetBean 的拖放组件创建了一个 GUI,但我无法编辑它们。可能吗?

请给我一个解决方案。非常感谢任何见解提前非常感谢

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 投票
1 回答
616 浏览

java - paintComponent() 在 repaint() 之后留下以前绘制的图像

我有一个绘制 .png 图像的 JPanel。每个图像有 2 个副本,以表示它是否已被选中。一张图片是正常的,一张有彩色边框表示已进行选择。(为了争论,您可以将这些图像视为简单的形状)

绘制哪个版本的图像是通过 MouseListeners 确定的。如果用户选择 image1,那么 image1 将显示其突出显示的版本。

一般来说,这是有效的,但是在 repaint() 时,图像的突出显示版本被留下了。由于突出显示的版本比普通版本略大,您可以看到它突出在新绘制的普通图像后面(重叠)。

我认为 repaint() 应该完全处理当前的图纸并从头开始,这似乎不是这里的情况。下面是总体思路,blackClicked 在 MouseListener 内切换。

所以我的问题是如何让 repaint() 摆脱其当前绘制的图像并从头开始。

另外,如果有更简单的方法来实现所有这些,请告诉我,制作 2 个图像副本是一项繁琐的工作。

0 投票
1 回答
832 浏览

java - JLabel 与 drawString 提高效率

关于使用 JLabels 与 paintComponents() .drawString() 方法,我有一个希望是简单的问题。假设我从不需要使用任何类型的 .getText() 或修饰符,使用其中一个有什么好处。

写一堆 JLabel 似乎很乱,而且我不是特别喜欢 JTextAreas 的想法。但是,我觉得将paintComponent 用于形状、颜色和图片以外的东西可能不是最好的主意。

0 投票
2 回答
619 浏览

java - 没有在正确的时间调用paintComponent

我正在尝试编写一个类似这样的应用程序:
- 显示一个对话框
- 当用户单击确定时,关闭对话框,转到主应用程序

以下是相关的代码片段:

发生的情况如下:
显示初始对话框:
我单击“确定”按钮。主窗口被调整到主应用程序的首选大小,但它没有被绘制,它只是透明的(这里以这个页面作为背景显示,呵呵):http:
//imgur.com/6Ssij.jpg

我可以说paintComponent 方法没有被调用,因为“绘画”没有打印到控制台。但是,“程序中的这一点”确实被打印出来了,所以程序没有挂起,它只是没有调用paintComponent。然后,当我启动客户端并连接时,应用程序最终被绘制,并且“绘制”和“获得客户端”被打印到控制台。稍后在应用程序中,对 repaint() 的调用也会延迟(即,在程序中实际调用paintComponent 的时间比调用 repaint() 的时间要晚)。

我还尝试使用以下内容替换初始对话框

结果完全相同。

tl;当我想要它时没有调用dr paintcomponent,怎么办?


获取更多信息:对 repaint() 的调用是在调用 sever.accept() 之前完成的 那么为什么在挂起 server.accept() 调用之前它不 repaint() 呢?

0 投票
4 回答
2848 浏览

java - java 2D and swing

I have trouble understanding a fundamental concept in Java 2D.
To give a specific example:
One can customize a swing component via implementing it's own version of the method paintComponent(Graphics g)
Graphics is available to the body of the method.
Question:
What is exactly this Graphics object, I mean how it is related to the object that has the method paintComponent? Ok, I understand that you can do something like:

To get a gray oval painted. What I can not understand is how is the Graphics object related to the component and the canvas. How is this drawing actually done?
Another example:

This prints

Width:184, Height:52

What does this size mean? I have not added anything to the frame of size(200,90).

UPDATE:
I understand that I must override paint to give in the Graphics g object the hints required to do the repaint and that I do not have to create a Graphics object as one will be given by platform.
What happens after that is what I can not understand.
E.g. does Graphics represent the screen and the object is painted accordingly on screen as soon as I start calling the various g.setXXX methods?
Does it get stored in a queue and there is a 1-1 association among g and each component? So the framework uses each g of each component to paint it one at a time?
How does this work? Any help on this is highly welcome

Thanks