让我的代码工作时遇到了一些麻烦。在我的代码中,嵌套的等腰三角形假设是这样绘制的:
我不确定我的代码是否可以工作,因为一旦我运行它,三角形就不会绘制。我给出的这个错误线程嵌套右等腰三角形Java
例外 “AWT-EventQueue的 - 0” java.lang.StackOverflowError的
,我不知道如何解决它。帮帮我?
import java.awt.*;
import javax.swing.*;
public class Ornament extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g); // Call JPanel's paintComponent method
// to paint the background
drawTriangles(g, 100, 80, 64);
}
/**
* Draws an ornament made of triangles in Graphics g with the base midpoint
* at (x, y) and base half-length r
*/
public void drawTriangles(Graphics g, int x, int y, int r)
{
g.drawLine(x + r, y, x - r, y);
g.drawLine(x + r, y, x, y - r);
g.drawLine(x - r, y, x, y - r);
if (r == 4)
{
drawTriangles(g, x-r , y, r);
drawTriangles(g, x-r , y, r);
}
else {
drawTriangles(g, 36+r , y, r);
r --;
}
}
public static void main(String[] args)
{
JFrame w = new JFrame("Triangles");
w.setBounds(300, 300, 200, 120);
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Ornament panel = new Ornament();
panel.setBackground(Color.WHITE);
Container c = w.getContentPane();
c.add(panel);
w.setResizable(false);
w.setVisible(true);
}
}
您的'drawTriangles'没有基本大小写。 – BitNinja 2014-10-19 23:01:51