Chapter10「図形を描こう」
色を指定して 図形を描くプログラム。
以前、線を引くプログラムを作った際、
色を変更する 事が出来なかった (挫折!)
↓過去
https://nerimagooglife.blogspot.com/2019/05/java-chapter10.html
https://nerimagooglife.blogspot.com/2019/06/blog-post.html
今回、この「Java入門j教室」をポチポチとPCを打ちながら
読み進むうちに フィールドに Color col; という
記述が。。。
何でも Colorクラスで宣言した変数には
Color.RED など を放り込む事が出来るらしい。
でもって、ポチポチっと 色を変更させてみた。
// 注意事項 Colorクラスの変数により 色の設定ができる。
// 注意事項 返り値は Color。
// 注意事項 return で 指定色を返す時には "" は不要。
// 注意事項 return で返す時には switch 分の場合は break; は不要。
⭐️前回のプログラムを 少し変えてみました。
// 改良点
// ◯例外処理を try~catch に統一しよう
// ◯インデントを直そう
// ◯色を変更出来る様にしよう
// 注意事項 Colorクラスの変数により 色の設定ができる。
// 注意事項 返り値は Color。
// 注意事項 return で 色を返す時には "" は不要。
// 注意事項 return で返す時には switch 分の場合は break; は不要。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Line{
public static void main(String[] args) throws IOException{
MyWindow mw = new MyWindow();
}
}
class MyWindow extends Frame{
//フィールドの作成
int startX; // 始点X
int startY; // 始点Y
int endX; // 終点X
int endY; // 終点Y
Color col; // Colorクラスの変数
MyWindow(){
System.out.println("直線を引きます。始点と終点を入力して下さい。");
startX = inputN("始点 X点は? (20 ~ 380 までの数値で) "); //引数を与えて input()メソッドを呼び出す。
startY = inputN("始点 Y点は? (20 ~ 380 までの数値で) ");
endX = inputN("終点 X点は? (20 ~ 380 までの数値で) ");
endY = inputN("終点 Y点は? (20 ~ 380 までの数値で) ");
col = inputC("色は? 1)BLACK 2)BLUE 3)RED 4)GREEN ");
setTitle("図形を描く");
setSize(400, 400);
setVisible(true);
addWindowListener(new WinListener());
}
public void paint(Graphics g){
g.setColor( col );
g.drawLine(startX, startY, endX, endY);
}
public static int inputN(String txt){ //start end の数値の入力
System.out.print(txt); //引数 txt の表示
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int n; //try~catch外でも 変数nを使用したい為
String str = null;
try{
str = br.readLine();
}catch(IOException e){
System.out.println(e);
}
try{ //数値以外が入力された際の例外処理
n = Integer.parseInt(str);
}
catch(Exception e){
System.out.println("数値以外が入力されました。"); //数値以外の際 200をnに代入
n = 200;
}
int num = 200; //初期値は200
if(n >= 20 && n <= 380) num = n; //入力した数値が 20~380の範囲内であるのか確認
return num;
}
public static Color inputC(String txt){ //注意 返り値は Color
System.out.print(txt); //引数 txt の表示
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int n;
String str = null;
try{
str = br.readLine();
}catch(IOException e){
System.out.println(e);
}
try{
n = Integer.parseInt(str);
}
catch(Exception e){
System.out.println("数値以外が入力されました。 1)BLACK 色に指定します。");
n = 1;
}
switch(n){
case 1:
return Color.BLACK; // 注意””は不要!
case 2: // 注意 break; は不要!
return Color.BLUE;
case 3:
return Color.RED;
case 4:
return Color.GREEN;
default:
System.out.println("1~4 以外の数値が入力されました。1)BLACK 色に指定します。");
return Color.BLACK;
}
}
}
class WinListener extends WindowAdapter{
public void windowClosing(WindowEvent e){System.exit(0);}
}
今日の教訓
重複部分があるのでスッキリさせよう。。。
0 件のコメント:
コメントを投稿