JavaSwingJPanel。我怎样画形状?
我已经实现了一个类JavaSwingJPanel。我怎样画形状?,java,swing,jpanel,Java,Swing,Jpanel,我已经实现了一个类DrawingPane扩展了JPanel来绘制一些形状。我在内部为每种类型的形状创建了一个单独的方法,例如圆: public void paintCircles(Graphics g) { super.paint(g); 但是,我无法通过引用classDrawingPane从另一个类调用此函数。如何做到这一点?如果这种方法不可行,我如何调用单个方法来绘制每种类型的形状,因为不同形状的代码要求不同 此外,方法scrollRectToVisible from
DrawingPane扩展了JPanel
来绘制一些形状。我在内部为每种类型的形状创建了一个单独的方法,例如圆:
public void paintCircles(Graphics g) {
super.paint(g);
但是,我无法通过引用classDrawingPane
从另一个类调用此函数。如何做到这一点?如果这种方法不可行,我如何调用单个方法来绘制每种类型的形状,因为不同形状的代码要求不同
此外,方法scrollRectToVisible from class
JPanel
不适用于对象RoundRectangle2D.Double
。如何使这些形状也可见 您可以将图形
转换为Graphics2D
,并使用public void draw(Shape s)
方法传递所有的Shape
s。对于任何形状
您可以使用公共矩形getBounds()
并将矩形
传递给scrollRectToVisible。您可以将图形
强制转换为图形2D
,并使用公共无效绘制(形状s)
方法传递所有形状
。对于任何形状
,您可以使用公共矩形getBounds()
并将矩形
传递给scrollRectToVisible。您需要在绘图窗格中实现绘图组件(图形g)
,并且您可以使用绘图(形状s)
绘制任何形状:
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.draw(yourShape);
}
您需要在DrawingPane
中实现paintComponent(Graphics g)
,并且可以使用draw(Shape s)
绘制任何形状:
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.draw(yourShape);
}
完成教程。如果你不能从中找到答案,我建议你准备并发布一份你的最佳尝试。完成教程。如果你不能从中找出答案,我建议你准备并发布一份你的最佳尝试。好的,正如你所描述的,我仍然需要在paintComponent中检查调用哪个方法的If-else-If,因为我必须在paintComponent中插入应用于每个形状的所有方法,比如paintCircle,paintRectangles等。我是否可以调用适当的一个(例如paintCircle),而不使用if-else,如果是从类外,即从类滚动窗格中调用?@arjacsoh:不,我已更新了我的答案,您可以使用draw(Shape s)
绘制任何形状,例如直线、矩形、圆或您想要的形状。@arjacsoh,带逻辑或不带逻辑,你从来没有从外面的任何班级打电话给paintXX。。。这不是Swing绘画的工作原理,请阅读教程,Andrew已经建议过。好的,正如您所描述的,我仍然需要在paintComponent中检查调用哪个方法的if-else-if,因为我必须在paintComponent中插入应用于每个形状的所有方法,比如paintCircle,paintRectangles等。我是否可以调用适当的一个(例如paintCircle),而不使用if-else,如果是从类外,即从类滚动窗格中调用?@arjacsoh:不,我已更新了我的答案,您可以使用draw(Shape s)
绘制任何形状,例如直线、矩形、圆或您想要的形状。@arjacsoh,带逻辑或不带逻辑,你从来没有从外面的任何班级打电话给paintXX。。。这不是Swing绘画的工作原理,请阅读教程,Andrew已经建议过了。