问题标签 [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.
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,我会看看那个网站,谢谢。
可以在此处找到作业,以避免与我的问题和/或代码片段有关的任何和所有混淆。
java - 画一个圆的半径和点周围的边缘
我真的很困惑如何进行编程。如何在Java中绘制一个半径和边缘周围的圆?
我需要在 JFrame 内绘制一个圆,其半径和圆周为点。我可以数学计算如何找到边缘周围点的坐标,但我似乎无法对圆进行编程。我目前正在使用 Ellipse2D 方法,但这似乎不起作用并且不返回半径,据我了解,它不会从中心绘制圆,而是使用高度和宽度从起始坐标绘制圆。
我当前的代码在一个单独的框架上,但我需要将它添加到我现有的框架中。
java - JPanel:实现我自己的paintComponent() 和渲染孩子都不起作用
我正在扩展一个 JPanel 来显示一个游戏板,并在底部添加一个 JEditorPane 来保存一些状态文本。不幸的是,游戏板渲染得很好,但是 JEditorPane 只是一个空白的灰色区域,直到我突出显示其中的文本,那时它将渲染突出显示的任何文本(但不是其余的)。如果我正确理解 Swing,它应该可以工作,因为 super.paintComponent(g) 应该呈现其他子项(即 JEditorPane)。告诉我,伟大的 stackoverflow,我犯了什么愚蠢的错误?
java - 非工作paintComponent方法
代码 :
编译完美,但是当我运行它时,它只显示一个表单。没有图片(或 中的任何其他操作paintComponent
)显示。有什么我想念的吗?
netbeans - 在 Net Beans 中的 JPanel 中绘制图形
是否有可能的方法来覆盖 NetBeans 中自动生成的 GUI 代码中的 paintComponent() 方法?我设法在不使用拖放组件的情况下手动绘制图表,并且我需要进行调整(例如添加单选按钮组),我发现这真的很耗时且乏味的工作。我使用 NetBean 的拖放组件创建了一个 GUI,但我无法编辑它们。可能吗?
请给我一个解决方案。非常感谢任何见解提前非常感谢
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 - paintComponent() 在 repaint() 之后留下以前绘制的图像
我有一个绘制 .png 图像的 JPanel。每个图像有 2 个副本,以表示它是否已被选中。一张图片是正常的,一张有彩色边框表示已进行选择。(为了争论,您可以将这些图像视为简单的形状)
绘制哪个版本的图像是通过 MouseListeners 确定的。如果用户选择 image1,那么 image1 将显示其突出显示的版本。
一般来说,这是有效的,但是在 repaint() 时,图像的突出显示版本被留下了。由于突出显示的版本比普通版本略大,您可以看到它突出在新绘制的普通图像后面(重叠)。
我认为 repaint() 应该完全处理当前的图纸并从头开始,这似乎不是这里的情况。下面是总体思路,blackClicked 在 MouseListener 内切换。
所以我的问题是如何让 repaint() 摆脱其当前绘制的图像并从头开始。
另外,如果有更简单的方法来实现所有这些,请告诉我,制作 2 个图像副本是一项繁琐的工作。
java - JLabel 与 drawString 提高效率
关于使用 JLabels 与 paintComponents() .drawString() 方法,我有一个希望是简单的问题。假设我从不需要使用任何类型的 .getText() 或修饰符,使用其中一个有什么好处。
写一堆 JLabel 似乎很乱,而且我不是特别喜欢 JTextAreas 的想法。但是,我觉得将paintComponent 用于形状、颜色和图片以外的东西可能不是最好的主意。
java - 没有在正确的时间调用paintComponent
我正在尝试编写一个类似这样的应用程序:
- 显示一个对话框
- 当用户单击确定时,关闭对话框,转到主应用程序
以下是相关的代码片段:
发生的情况如下:
显示初始对话框:
我单击“确定”按钮。主窗口被调整到主应用程序的首选大小,但它没有被绘制,它只是透明的(这里以这个页面作为背景显示,呵呵):http:
//imgur.com/6Ssij.jpg
我可以说paintComponent 方法没有被调用,因为“绘画”没有打印到控制台。但是,“程序中的这一点”确实被打印出来了,所以程序没有挂起,它只是没有调用paintComponent。然后,当我启动客户端并连接时,应用程序最终被绘制,并且“绘制”和“获得客户端”被打印到控制台。稍后在应用程序中,对 repaint() 的调用也会延迟(即,在程序中实际调用paintComponent 的时间比调用 repaint() 的时间要晚)。
我还尝试使用以下内容替换初始对话框
结果完全相同。
tl;当我想要它时没有调用dr paintcomponent,怎么办?
获取更多信息:对 repaint() 的调用是在调用 sever.accept() 之前完成的 那么为什么在挂起 server.accept() 调用之前它不 repaint() 呢?
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