gpt4 book ai didi

java - 在添加到 jcomponent 的容器上绘制

转载 作者:行者123 更新时间:2023-11-30 11:56:10 26 4
gpt4 key购买 nike

我有一个 jrame,我在上面添加了一些 JComponent 对象。每个 JComponent 都有我使用 JComponent.add(Component) 添加的容器列表。

现在,在我的主要 JComponent 类(称为 MyComponent)中,我重写了 protected 方法 paintComponent,我可以在其中绘制东西,效果非常好。

但我不想在主 JComponent 上绘制,我只想在添加到我的主 JComponent 的容器上绘制。

所以在 MyComponent 的 paintComponent 中,我执行以下操作。

protected void paintComponent( Graphics g) {
super.paintComponent( g);

Graphics page_g = this.getPage( "main").getGraphics();

page_g.setColor( Color.RED);
page_g.drawRect( 10, 10, this.getWidth() - 20, this.getHeight() - 20);
page_g.setColor( Color.BLUE);
page_g.drawString( "HELLO WORLD", this.getWidth() / 2, this.getHeight() / 2);
}

行 this.getPage( "main").getGraphics();从我的一个容器中获取 Graphics 对象,添加到容器的 MyComponents 列表中,当然还使用 JComponents add 方法添加到主要组件列表中。通过调用 setVisible( true) 将容器设置为可见;方法。

但是没有任何反应。屏幕是空的。当我用 g 替换 page_g 时,绘画工作正常,因为它在我的 JComponent (MyComponent) 上绘画,但我想在容器上绘画,在这种情况下它是 MyComponent 的子级。

我经常听到“永远不要使用 getGraphics()”。但是,当调用父组件的 paintComponent 方法时,还有什么办法只能在父组件的子组件上绘制呢?

最佳答案

真正最好的办法是让实际进行自定义绘画的类覆盖它们自己的 paintComponent() 方法。让 AWT 担心图形上下文。

关于java - 在添加到 jcomponent 的容器上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com