学校用のJavaアプレットを作成しています。このアプレットの機能は、3点の座標に対して6つの数値をランダムに選択し、それらを接続して三角形を作成することです。1つの三角形を描き、「辺の長さ」を見つけることだけを想定しています。ただし、自分のWebサイトに配置すると、何度も再描画されます。
線を引くための座標に4つの乱数だけを選択する、より単純な別のアプレットを作成しました。同じ問題。
再描画の問題は、ユーザーが画面を移動したときに発生するようです。たとえば、スクロールしたり、Eclipseでアプレットビューアーのサイズを変更したりします。私のソースコードはここに掲載されています。
助けてくれてありがとう!ありがとう!
import javax.swing.JApplet;
import java.awt.*;
@SuppressWarnings("serial")
public class LineApplet extends JApplet {
/**
* Create the applet.
*/
static int width;
int height;
public void init() {
width = getSize().width;
height = getSize().height;
}
public static int[] randomLine() {
int[] pointArray = new int[4];
int x;
for (int i = 0; i < 4; i++) {
x = ((int)(Math.random()*(width/10-2)))*20+10;
pointArray[i] = x;
}
return pointArray;
}
public void paint(Graphics g) {
g.setColor(Color.blue);
int[] coords = new int[4];
coords = randomLine();
g.drawLine(coords[0], coords[1], coords[2], coords[3]);
g.drawString(coords[0]/10 + ", " + coords[1]/10, coords[0], coords[1]);
g.drawString(coords[2]/10 + ", " + coords[3]/10, coords[2], coords[3]);
int midpointx = (coords[0] + coords[2])/2;
int midpointy = (coords[1] + coords[3])/2;
g.drawString(midpointx/10 + ", " + midpointy/10, midpointx, midpointy);
}
}