ここに初めて投稿するこのプログラミングの割り当ては、私は困惑している、コードは以下のとおりである:それは正しくコンパイルが、プログラムを実行するときに私が得るすべては空のJFrameのある初心者スイング再帰
import java.awt.*;
import javax.swing.*;
public class HTree extends JPanel {
private Color color = new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256));
public void draw(Graphics g, int n, double sz, double x, double y) {
if (n == 0) return;
double x0 = x - sz/2, x1 = x + sz/2;
double y0 = y - sz/2, y1 = y + sz/2;
// draw the 3 line segments of the H
g.setColor(color);
g.drawLine((int)x0, (int)y, (int)x1, (int)y);
g.drawLine((int)x0, (int)y0, (int)x0, (int)y1);
g.drawLine((int)x1, (int)y0, (int)x1, (int)y1);
// recursively draw 4 half-size
// H-trees of order n-1
g.setColor(color);
draw(g, n-1, sz/2, x0, y0);
draw(g, n-1, sz/2, x0, y1);
draw(g, n-1, sz/2, x1, y0);
draw(g, n-1, sz/2, x1, y1);
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
draw(g, 3, .5, .5, .5);
}
public static void main(String[] args) {
HTree h = new HTree();
JFrame application = new JFrame("HTree");
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(h);
application.setSize(1000, 1000);
application.setVisible(true);
}
}
。私はスイングに慣れていませんが、問題はHTreeのコンストラクタが間違っているか、メインでdraw()を呼び出す必要がありますが、Graphicsオブジェクトで呼び出す方法がわからないことがあると思います。どんな助けもありがとう、ありがとう!
ありがとう!今のところ:http://i.imgur.com/BlS4Amk.pngでは、args [0]から再帰回数をどのように渡すかはまだ分かりませんが、代わりにユーザー入力のインスタンス変数が使用されています。私は各再帰を配列でランダムな色にし、g.fillRectで線を太くすることができました。 – skol
優秀;私は上記のいくつかの提案を追加しました。 – trashgod