0

独自のクラスを作成する方法を学習したばかりで、この特定の課題ではグラフィックスを操作する必要がありました。クレヨンを描画し、5 つのクレヨンを並べてテスト プログラムを作成する必要がありました (それぞれの色と x、y を変更するだけです)。色とx、y座標を変更する方法は知っていますが、私の質問は...

各クレヨンを「印刷」するにはどうすればよいですか? はい、これはアプレットであり、.html ファイルが必要であることはわかっています。しかし、.html ファイルを実行したときにクレヨンが表示されるようにするには、テスト プログラムで正確に何が行われるのでしょうか? を使用してテストプログラムで非アプレットを実行しSystem.out.printlnたことがありますが、グラフィックスは使用したことがありません。それはちょうどでしょうSystem.out.println(Crayon);か?

また、複数のクレヨンを入手するにはどうすればよいですか? ;だと思いCrayon crayons = new Crayonますが、次は「Crayon crayons2 = new Crayons;」でしょうか? わからない。

x、y座標はクレヨンごとに変更する必要がありますが、割り当てのUMLは、それらをインスタンス変数にするのではなく、「public void paint (Graphics g, int x, int y)」に入れるように指示しました。テストプログラムについてこれまでに持っているもの(正しい場合と正しくない場合があります):

import javax.swing.JApplet;
import java.awt.*;

public class BoxOfCrayons extends JApplet {
   Crayon first = new Crayon (Color.red, 50, 250)
4

1 に答える 1

0

2D Graphicsを一読することから始めます。

基本的に、ある種の のリストを作成する必要がありますCryon。これは、Collectionあなたが知っていることに応じて、または配列のいずれかになります。個人的には aArrayListを使用します。柔軟で使いやすいためですが、配列と同じ制約に悩まされることはありません。

BoxOfCryons次に、から拡張するカスタム コンポーネント (つまり ) を作成しますJPanelpaintComponentこのクラスメソッドをオーバーライドします。このメソッド内で、 のリストを実行し、最後の の幅だけオフセットをCryonインクリメントして、それぞれをペイントします。xCryon

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g.create();
    int x = 0;
    int y = 0;
    for (Crayon crayon : cryons) {
        crayon.paint(g2d, x, y);
        x += crayon.getWidth();
    }
    g2d.dispose();
}

から拡張された新しいクラスを自分で作成しますJApplet。そのinitメソッドで、アプレット レイアウト マネージャーを設定し、クラスBorderLayoutのインスタンスを追加します。BoxOfCryons

于 2013-03-04T03:19:32.617 に答える