2016-07-28 2 views
0

私はJavaでLine DDAアルゴリズムを実装しています。コードはうまくいくようです。アプレットJavaでのDDAアルゴリズムの実装でのサイズ変更

私が直面している問題は、アプレットサイズのサイズを変更することです。アプレットの出力は小さく、640 x 480のアプレットウィンドウサイズで動作させたいです。
私はすでにresize(640,480)を使用しています。 paint()メソッドの冒頭にありますが動作しません。それは何ですか、私はそれが640 x 480に拡大し、プログラムが終了しない(私は強制的にプログラムを終了する必要があります) 。どんな助けもありがとう。実装コード:

package line; 

import java.applet.Applet; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.util.Scanner; 

public class DDALine extends Applet { 

    @Override 
    public void paint(Graphics g) {  
     //resize(640,480); 
     g.setColor(Color.RED); 

     float x,y,x1,y1,x2,y2,dx,dy,steps,incrx,incry; 
     int i; 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter the value of x1 : "); 
     x1 = sc.nextInt(); 
     System.out.println("Enter the value of y1 : "); 
     y1 = sc.nextInt(); 
     System.out.println("Enter the value of x2 : "); 
     x2 = sc.nextInt(); 
     System.out.println("Enter the value of y1 : "); 
     y2 = sc.nextInt(); 

     dx = Math.abs(x2-x1); 
     dy = Math.abs(y2-y1); 

     if(dx>=dy) 
     steps=dx; 
     else 
     steps=dy; 

     incrx=dx/steps; 
     incry=dy/steps; 

     x=x1; 
     y=y1; 

     i=1; 

     while(i<=steps) { 
      g.drawLine(Math.round(x),Math.round(y),Math.round(x),Math.round(y)); 
      x=x+incrx; 
      y=y+incry; 
      i=i+1; 
      try { 
       Thread.sleep(100); 
      } catch (InterruptedException ex) { 
      } 
     } 
    } 
} 

答えて

0

init()メソッドにsetSize()メソッドを入れて解決しました。コードは次のとおり

import java.applet.Applet; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.util.Scanner; 

public class DDALine extends Applet { 


@Override 
public void init(){ 
    setSize(800, 600); 
} 

@Override 
public void paint(Graphics g) {  
g.setColor(Color.RED); 

float x,y,x1,y1,x2,y2,dx,dy,steps,incrx,incry; 
int i; 
Scanner sc = new Scanner(System.in); 
System.out.println("Enter the value of x1 : "); 
x1 = sc.nextInt(); 
System.out.println("Enter the value of y1 : "); 
y1 = sc.nextInt(); 
System.out.println("Enter the value of x2 : "); 
x2 = sc.nextInt(); 
System.out.println("Enter the value of y1 : "); 
y2 = sc.nextInt(); 

dx = Math.abs(x2-x1); 
dy = Math.abs(y2-y1); 

if(dx>=dy) 
steps=dx; 
else 
steps=dy; 

incrx=dx/steps; 
incry=dy/steps; 

x=x1; 
y=y1; 

i=1; 

    while(i<=steps) {   
      g.drawLine(Math.round(x), Math.round(y), Math.round(x), Math.round(y)); 
      x=x+incrx; 
      y=y+incry; 
      i=i+1; 
     try { 
      Thread.sleep(100); 
     } catch (Exception ex) { 
     } 
    } 
} 

}

関連する問題