/***************************************** 示範BufferedImage用法 *************************************************/ import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; //想想還有沒有其他的東西要import import java.awt.image.*; import javax.imageio.*; public class ui42 extends JFrame implements ActionListener { Container c; //設定UI元件 JTextField txt1,txt2; JButton bot1,bot2; BufferedImage bi; JLabel lab; //設定共用的變數與類別 public ui42() //建構元,名稱改一改 { super("ImageIO"); //初始化共用變數 c=getContentPane();//取得ContentPane //設定版面設定 c.setLayout(new FlowLayout()); //初始化UI元件 txt1=new JTextField(8); txt2=new JTextField(8); bot1=new JButton("讀取並分析"); bot2=new JButton("寫出"); lab=new JLabel(); //將UI元件加入ContentPane c.add(txt1);c.add(bot1);c.add(txt2);c.add(bot2);c.add(lab); //設定UI元件與滑鼠的事件觸發傾聽者 bot1.addActionListener(this); bot2.addActionListener(this); setSize(640,480);//設定size,顯示出去 setVisible(true); } public void paint(Graphics g) { super.paint(g);//畫出元件 //額外的畫圖程式寫在這裡 if (bi!=null) g.drawImage((Image)bi,0,100,null); } //UI元件事件處理類別寫在這裡 public void actionPerformed(ActionEvent e) { int x,y,W,H,color,R,G,B,Rcnt=0,Gcnt=0,Bcnt=0; if (e.getSource()==bot1) { try { bi=ImageIO.read(new File(txt1.getText())); W=bi.getWidth(); H=bi.getHeight(); for (y=0;y>16&0xff; G=color>>8&0xff; B=color&0xff; if (R>G&&R>B) { Rcnt=Rcnt+1; color=255<<16|0<<8|0; } else if (G>R&&G>B) { Gcnt=Gcnt+1; color=0<<16|255<<8|0; } else if (B>R&&B>G) { Bcnt=Bcnt+1; color=0<<16|0<<8|255; } bi.setRGB(x,y,color); } lab.setText("R:"+Rcnt+" G:"+Gcnt+" B:"+Bcnt); } catch (Exception ee) { System.out.println(ee.toString()); } } else if (e.getSource()==bot2) { try { ImageIO.write(bi,"jpg",new File(txt2.getText())); } catch (Exception ee) { System.out.println(ee.toString()); } } repaint(); } //滑鼠事件處理類別寫在這裡 /***主程式***/ public static void main(String args[]) //程式起點 { ui42 app=new ui42(); //名稱改一改,啟動UI元件 app.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); //處理視窗關閉要求 } }