问题标签 [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 投票
2 回答
3850 浏览

java - 新创建的图形对象仅在调整框架大小后显示

这是这篇文章的延续

我有一组随机大小的图形添加和绘制到 JPanel 组件上。我有一个按钮,它正在向同一个 JPanel 添加一个新的绘图对象,但在我重新调整窗口大小之前不会显示。我已经添加了这篇文章中提到的 EDT 信息,并且还在组件上调用了 repaint() 方法。正如Hovercraft所建议的那样,我还没有使用 ArrayList ,但我会的。我的大脑需要慢慢地理解事物。

谢谢你。

代码分为两个类。

}

二等舱

0 投票
3 回答
6932 浏览

java - 在 JFrame 中设置 JPanel?

所以,我一直在努力重做我的代码,以便绘画全部在 JPanel 而不是 JFrame 中完成,这样我就可以做一些非常需要的图像缓冲。

我已经搜索了 StackOverflow,并且我用谷歌搜索了我的手指,我认为我设置正确,但它不起作用。我只是在终端中看到一个空白屏幕和一些错误脚本。任何帮助表示赞赏。这是代码

错误脚本:

线程“主”java.lang.NullPointerException 中的异常

在 java.awt.Container.addImpl(未知来源)

在 java.awt.Container.add(未知来源)

在 RacerDoom.(RacerDoom.java:46)

在 RacerDoom.main(RacerDoom.java:232)

我很确定我只是个白痴,答案可能是在错误消息中给了我中指,但对我来说仍然是希腊语。但即使(尤其是?)白痴也需要帮助。

0 投票
1 回答
1683 浏览

java - 设置 BorderLayout 并调用 paintComponent()

我的问题:我有一个RoundedPanel扩展JPanel和覆盖paintComponent()方法的类,以便在面板周围绘制圆角。我创建了一个MyPanel扩展类RoundedPanel

当我将面板放在MyPanel使用FlowLayout布局上时,会出现圆形边框。为了调整面板上的组件大小以填充最大空间,我将 替换FlowLayoutBorderlayout. 但是,该paintComponent()方法永远不会被调用,圆角边框也不再出现。

有谁知道如何创建一个圆形面板,其组件在调整窗口大小时被拉伸以填充空间?有人可以解释一下为什么paintComponent()在使用 Borderlayout 时不调用该方法吗?

提前致谢。

编码 :

0 投票
1 回答
284 浏览

java - 为什么面板不上漆?

代码

我得到一个完全涂成红色的面板。为什么我不接电话?我怎么才能得到它?

0 投票
0 回答
496 浏览

java - 自定义组件不会在 JLayeredPane 中绘制

我们正在用 Java 创建一些学校项目。我们想要做什么:有 JScrollPane 作为 GUI 的一部分,包含 JLayeredPane(比方说“MapPane”)。MapPane 包含国家的地图(在底部),它是带有图标的 JLabel。这很好用,MapPane 是可滚动的,一切正常。

现在,我们要添加一些扩展类 SpatialElement 的更多自定义图形元素

每个元素都扩展类 SpatialElement(简化):

因此,例如元素 Polygon 看起来像(简化):

因此,当用户添加新的图形元素时,addSpatialElement会调用一个方法(in MapPane):

我希望代码简单但足够描述性。问题是,即使将新创建的组件添加到 MapPane(扩展的 JLayeredPane)中,该元素也不会绘制。首先我认为这是由错误的边界引起的(在 updateBounds 方法中计算),但它们没关系。

如果我element.repaintComponent(getGraphics())在将其添加到 MapPane 之后直接调用,它会绘制元素,但在与 MapPane 进行任何交互(例如调整窗口大小等)之后,MapPane 会被重新绘制,因此对象不会重新绘制。

如何强制 MapPane 在调整大小时重新绘制所有包含的组件?我是否必须覆盖 MapPane 的默认 paintComponent 方法(所以我将遍历对象并在每个对象上调用 repaintComponent() )?

还是有一些更好的,不是那么棘手的解决方案怎么做?

谢谢你的建议。

0 投票
3 回答
145 浏览

java - Java图形问题

我有一个带有监听器的 JComponent。在 JComponent 上,我绘制了一个大图像,鼠标侦听器在发生点击的地方添加了小图像(我在一张大地图上添加了一些点)。

如何以编程方式在paintComponent 方法之外绘制一些东西?

我的问题是:

它什么也没做。我试过重绘()。

0 投票
2 回答
859 浏览

java - 在 java 中使用 Graphics 绘制线条

下面是一个在两点中绘制 1 条线的方法示例

我试图为点传递一个构造函数,但是当我在 main 中运行它时,我无法确定当我调用paintComponent 时我应该为 comp 传递什么值

我应该传递什么?

0 投票
0 回答
335 浏览

java - 多层 JPanel。想要重新粉刷中间面板而不让它覆盖更多的前面板

我正在制作游戏。它由一个 JPanel 组成,该 JPanel 包含几个其他 JPanel。1 个底部面板,带按钮,1 个顶部面板,带按钮,两个面板之间的一个面板是常规游戏屏幕,然后是几个 SlidingPanes 和动态 JPanel,它们通过单击顶部或底部面板上的按钮滑入或弹出或单击游戏屏幕上的某个位置。

现在,我正在绘制一辆沿着游戏屏幕上的路径行驶的卡车。卡车画得很好,但是每当我单击按钮打开滑动窗格时,它就会被游戏屏幕面板覆盖,使其在打开时闪烁,然后直到我将鼠标悬停在它上面才显示。游戏屏幕的paintComponent 方法是造成这种情况的原因,每当调用重绘方法时,它都会将游戏屏幕带到最前面,而我希望它留在滑动窗格或在其顶部弹出的面板后面。

有没有办法让游戏屏幕停留在它所在的图层而不用paintComponent将它带到顶部?

请让我知道,如果你有任何问题。

谢谢

0 投票
2 回答
202 浏览

java - JComponent size issue

I have a JComponent subclass that I am using to draw shapes onto my screen. In the constructor, I am trying to set ballX and ballY to half of the X and Y size values of the JComponent, and I think I am doing it wrong. I have looked this up a lot now, and cannot find a remedy. The code is as follows. Please bear in mind that this is my first real Swing/Graphics2D venture.

0 投票
1 回答
2123 浏览

java - Java PaintComponent 在扩展 Jpanel 的抽象类的子类中的大小和位置

我正在构建一个简单的国际象棋游戏,并且一直试图在面板上绘制图纸

我准备好了一块板子,板上有面板。这些面板是 70x70 像素,接下来我要做的是使用整个表面来绘制棋子。

我制作了一个扩展 JPanel 的抽象类 Pieces。

其中一个当然是 Pawn :

在 Pawn 类中,我有绘画组件:

这似乎不起作用。输出打印 height = 10px 和 width = 10px; ....但它应该是 70px 和 70px。我还看到画在我面板内的 10x10 正方形内的绿色椭圆形......

我尝试了一个 setSize(70,70) 并没有真正做到这一点......我也尝试了 SetPreferredSize 但它也没有真正奏效。我真的很想保留我的抽象类和子类......

@@@ 编辑 @@@ 我再次使用了 setPreferredSize,现在我可以在 Jpanel 上绘制我的绿色圆圈了。但是仍然存在错误,因为它不是使用的 Jpanel 的整个表面......顶部仍然存在间隙,截图:
http://imgur.com/INVj4