问题标签 [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 - 在被添加到 jcomponent 的容器上绘制
我有一个 jrame,我在上面添加了一些 JComponent 对象。每个 JComponent 都有一个我使用 JComponent.add(Component) 添加的容器列表。
现在在我的主 JComponent 类中,称为 MyComponent,我覆盖了受保护的方法 paintComponent,我可以在其中绘制东西,它工作得很好。
但我不想在主 JComponent 上绘画,我只想在我添加到主 JComponent 的容器上绘画。
因此,在paintComponent 的MyComponent 中,我执行以下操作。
这行 this.getPage("main").getGraphics(); 从我的一个容器中获取 Graphics 对象,该容器添加到容器的 MyComponents 列表中,当然也使用 JComponents add 方法添加到主组件列表中。通过调用 setVisible(true); 将容器设置为可见;方法。
但什么也没有发生。屏幕是空的。当我用 g 替换 page_g 时,绘画工作,因为它在我的 JComponent (MyComponent) 上绘画,但我想在这种情况下是 MyComponent 的子容器上绘画。
我经常听到“从不使用 getGraphics()”。但是当调用父组件的paintComponent方法时,怎么才能只在父组件的子组件上绘制呢?
java - 将椭圆添加到 JPanel (paintComponent)
在嵌套 JPanel 的布局中,我希望添加一个绘制的椭圆。
为此,我使用以下内容:
现在在我的一个面板中,我希望添加这个椭圆形,但我似乎无法添加它。
任何输入表示赞赏!
java - 如何在 JApplet 中显示 BufferedImage
japplet 上不显示图像。
这就是我检索文件的方式。
上面的代码在小程序中。
我究竟做错了什么?为什么我会收到错误消息。“无法读取输入文件!”
任何帮助,将不胜感激。
谢谢你,布拉格曼
java - 为什么将布局设置为 BorderLayout 意味着永远不会调用paintComponent
在下面的示例程序中,如果将 useBorderlayout 设置为 true,则永远不会调用 paintComponent 方法 - 为什么?!
java - jpanel 不绘制缓冲图像,但缓冲图像可以创建为文件
嗨,我有一个 jpanel 可供使用。从这个 jpanel 我制作缓冲图像并将它们安全到链表中。在按下按钮时,我想为这个缓冲图像设置动画(一个接一个地播放)问题是 jpanel 不显示缓冲图像但是当我使用 ImageIO.write 来保护磁盘上的缓冲图像时,我得到了我想要动画的所有图片。请帮助我。
这是我的代码:
java - 为什么当我调用 repaint() 时什么都没有绘制?
首先,我是初学者。我正在尝试使用 s 数组制作益智游戏Piece
。每个Piece
代表一个从 1 到 9 的数字。我正在尝试使用 绘制paintComponent(Graphics g)
,但是当我调用该repaint()
方法时,什么也没有发生。没有错误,所以一定有一些我不知道的地方。
我正在使用 NetBeans。我创建了一个新的桌面应用程序,然后添加了一个JPanel
和一个JButton
.
这是我的代码:
repaint()
当我单击按钮时,我试图调用该方法。
这是课程Piece
:
这只是第一步;有好多事情要做。public void paintComponent(Graphics g)
但在我完全理解如何工作之前,我不能继续下去repaint()
。
所以,请,任何帮助将不胜感激。
java - Java - 更改 BufferedImage 文件
我有一个扩展 JPanel 并实现 MouseListener 的 Java 类,并尝试复制 JButton 的一些基本功能,但加载了一些图像以使事情更漂亮。这是我的一些代码片段。
类字段:
在构造函数中,我有:
然后我重写paintComponent 来绘制图像:
这很好用!万岁。但我也希望能够更改正在绘制到屏幕上的图像。这不起作用:
mousePressed() 肯定会成功触发(尝试了 System.out.println() 调试语句)所以我必须做什么才能成功更改正在绘制的图像?
java - 扩展 Java Swing/AWT 程序
我编写了一个绘制头部的小型 Swing 程序,当用户选择/取消选择 JCheckBox 实例时,会从头顶绘制或移除帽子。我在执行该程序的下一步时遇到了一些麻烦——我想向 Head 类添加一个布尔字段,使该组件使用 MouseListener 侦听鼠标事件。从那里开始,我想使用两种方法将此字段设置为真/假,并渲染其余三种方法跛脚鸭。另外,我将如何更改paintComponent 方法,以便如果布尔值为true,则对象是睁着眼睛绘制的,如果为false,则头部是闭着眼睛绘制的?请提供您的任何建议。非常感谢!
---------------------------------- 第二次尝试
java - 在另一个组件中绘制外部组件(即属于不同框架的内容窗格)
大家好。我想绘制一个外部组件(即属于不同框架的内容窗格),我们将其称为框架 B,在框架 A 的组件内。
问题是,当我绘制组件时,它也在框架 A 的内容窗格中绘制,当框架重新调整大小时,它也会闪烁或全部变丑(即在组件内绘制几次,出现一些蓝色方块, ETC。)。例如,如果我尝试在绘画之前缩放或平移外来组件,问题就会变得更加明显。
过了一会儿,我整理了一下,我想。但是我对这个解决方案感觉不太好,出于某种原因,我相信可能会有更好的解决方案,更合适的解决方案。在这里我需要你。:)
这个问题更多的是要求解释为什么外部组件被错误地绘制而没有在组件内部绘制之前和之后操纵它的双缓冲功能。例如,使用任何一对 setDoubleBuffered(false) 和 setDoubleBuffered(true) 或 disableDoubleBuffering(jP) 和 enableDoubleBuffering(jP)
分别在调用外部组件的paint方法之前和之后。
先感谢您。显示问题的 SSCCE 如下所示。
与 SSCCE 示例无关。 以下与问题本身无关。 这段代码的目的是展示我如何在组件中实现 Printable,我还想以打印预览方式呈现该组件。print 调用组件的paint(如下图)。
java - 在 JPanel 上重新绘制/刷新 JLabels
我无法让我的 JLabels 在 2D 数组中在运行时更新。
我正在开发的程序是 Connect Four 的一个变体。我创建了一个 JLabels 的 2D 数组,它们都默认为一个包含空白插槽图像的 ImageIcon。玩家 1 和 2 选择他们的颜色,在轮到玩家时,他可以单击将一块棋子放入一列(重力会导致棋子落到底部或直到它落在另一块棋子的顶部)。
我很肯定我的 addToColumn 方法运行良好。我唯一的问题是我似乎无法更新任何 JLabels。这是我正在研究的方法:
p1、p2 和 current 是 Player 对象。grid[][] 是一个二维整数数组,设置为 0、1 或 2,以便更轻松地跟踪谁拥有哪些图块。tiles[][] 是我的二维 JLabels 数组。
现在最后两行更改了tiles [] []中的JLabel,显然我不需要两者,不确定哪种方式更好......这只是我尝试过的一些方法,但无济于事。(我的 getColor() 方法返回一个 Color,findColorIcon(Color c) 返回对应的 JLabel 与该颜色的瓷砖)。
是的,我也在我的 paintComponent 方法中添加了:
我已经坚持了一段时间了,我觉得我错过了一些明显的东西。有什么建议么?