/******************************* 填圖程式 要用以下的方式執行系統才不會發生錯誤(增大stack memory) java -Xss20M f5 請寫一支程式,可在一個800*640的視窗中任意畫圖(註), ****再利用radio的方式選擇紅、綠、藍三種填圖顏色。 在所畫出的圖的範圍內任點,依所點選的顏色填滿其區域(不能超過線的範圍)。 註:畫出來的圖為一個無缺口的完整圖,另提供一個畫圖類別b1pre, 只需利用繼承的方來使用此一畫圖類別。 ************************************/ import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.util.*; public class f5 extends b1pre implements ActionListener//按鈕事件 { Container c; JButton rot0,rot1; int mode=0; int now_x,now_y; int clrpt=0,oldpt=0;//設定填紅色 static int cnt=0; public f5() //建構元 { super("填圖程式"); int i,j; c=getContentPane(); //設定buttom rot0=new JButton("結束"); //設定視窗大小 setSize(820,800); c.setLayout(new FlowLayout(FlowLayout.CENTER)); //裝設各種Adaptor c.add(rot0); rot0.addActionListener(this); addMouseListener(new cmouse()); setVisible(true); } public void paint(Graphics g) //真正的畫圖設定 { int x,y; super.paint(g); for (x=0;x=1) { if (getb_xy(x,y-1)==oldpt) fill(x,y-1); } if (y<=max_Y-2) { if (getb_xy(x,y+1)==oldpt) fill(x,y+1); } if (x>=1) { if (getb_xy(x-1,y)==oldpt) fill(x-1,y); } if (x<=max_X-2) { if (getb_xy(x+1,y)==oldpt) fill(x+1,y); } return; } //**********************/ public static void main(String args[]) //程式起點 { f5 app=new f5(); //畫圖 //處理視窗關閉要求 app.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } }