在添加到JCOMPONENT的容器上涂漆
-
09-10-2019 - |
题
我有一个jrame,我在上添加一些Jcomponent对象。每个Jcomponent都有一个我使用JCOMPONENT.ADD(组件)添加的容器列表。
现在,在我的主要Jcomponent类中,称为MyComponent,我覆盖了受保护的方法PaintComponent,我可以在其中绘制物品,这很好。
但是我不想在主Jcomponent上绘画,我只想在添加到主Jcomponent的容器上绘画。
因此,在PaintComponent中的MyComponent中,我会执行以下操作。
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();将图形对象从我的一个容器中添加到“ myComponents”列表中,当然还有使用JCOMPONENTS添加方法添加到主组件列表中。通过调用设置可见(true),将容器设置为可见;方法。
但是什么都没有发生。屏幕为空。当我用g替换page_g时,然后绘画起作用,因为它在我的jcomponent(mycomponent)上绘画,但是我想在这种情况下是我的组件的孩子的容器上绘画。
我经常听到“永远不要使用GetGraphics()”。但是,当父母paintComponent方法被调用时,只有如何绘制父组件的子组件?
解决方案
真正的最好的选择是让实际上进行自定义绘画的类覆盖自己的PaintComponent()方法。让AWT担心图形上下文。
不隶属于 StackOverflow