程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java Applet 入門 第六天

Java Applet 入門 第六天

編輯:關於JAVA

一 圖形文件的讀入 
    在Java中,可以直接載入並輸出圖形文件格式, 一共有兩種,分別是Gif和Jpeg文件(不要懷疑,真的不支持BMP文件格式)。只要你能夠給定圖形文件的位置和文件名,就可以通過getImage這個方法載入所要的圖形。 
    在這裡所說的位置,指的並不是在磁盤上的哪一個目錄,而是圖形文件所在的URL位置。換句話說,你不但可以在Java程序中使用存放在自己硬盤上的圖形文件,還可以通過URL指定的方式,直接度曲網絡資源上的圖形文件,而且使用的方式非常簡單,完全沒有一般在編寫網絡程序上常遇到的困難和負擔。 
    讓我們來看一看getImage的使用方式,getImage這個方法主要出現在兩個類裡,第一個是java.applet.Applet中,另外一個是java.awt.Tookit。在編寫Java應用程序時,只能使用Java.awt.Tookit中的方法,而編寫Java小應用程序時,良種都可以使用。getImage方法的格式是: 
1)在Java.applet.Applet類內 
Image getImage(URL,url) 
Image getImage(URL url,String name) 
2)在Java.awt.Tookit類內 
Image getImage(String filename) 
IMage getImage(URL url) 
    舉個例子來說,它的調用方法為: 
URL url1,url2; 
url1=new URL("file:/d:/image/pic1.gif"); 
url2=new URL("http://abc.cde.edu.cn/Applet/pic2.jpg"); 
Image image1=getImage(url1): 
Image image2=getImage(url2): 
Image image3=getImage(getCodeBase(),"p1.jpg"); 
    其中的getCodeBase()方法是返回相對路徑,也就是說,你的網頁文件現在在哪兒,那麼它的返回值就是你的網頁文件的這個位置。 
把圖形文件讀入內存中後,下一步,就是要將它顯示出來了,怎麼顯示出來,用g.drawImage(image1,x,y,this)方法就可以了,x,y是圖形顯示的坐標點。如果要改變大小,可以用如下的顯示方式。 
g.drawImage(image1,x,y,width,height,this); 
g.drawImage(image1,x,y,width,height,Color.blue,this); 
    後面的一種方法是將圖片的背景色設置成為blue顏色,改變width和height就可以達到改變圖片的顯示大小與比例,可以形成放大與縮小,或者是拉長拉扁等效果了。 
    讓我們看一個具體的例子吧! 
這是一幅圖片顯示兩次,請查看它的源代碼 

二 聲音文件的讀入 
    聲音文件和Java讀入圖形格式的原理是一樣的,但是,現在Java好象還只支持AU格式的聲音文件格式,這種格式並不多見,所以可能需要大家將別的文件格式轉化成為這種格式了。它的調入方法和播放方法如下: 
import Java.applet.AudioClip; 
AudioClip bgsound=getAudioClip(URL url): 
bgsound.play();     //播放一次 
bgsound.loop();    //循環播放 
bgsound.stop();     //停止播放 
//你也可以直接一次性地讀入並播放 
play(getCodeBase(),"audio/welcome.au"); 
…… 
它的URL的使用方法同前面的讀入圖象時用的方法是一個原理,這兒就不多說了! 
三 JavaApple中字體屬性的設置 
JavaApple中字體屬性的設置 
    從前地面的學習中,我們已經知道,Graphics類的方法drawString()可以在屏幕的指定位置顯示一個字符串,而Java中還有一個類Font,使用它可以獲得更加豐富多采和逼真精確的字體效果。 
     一個Font類的對象表示了一種字體的顯示效果,包括字體類型、字型、和字號。下面的語句用語創建一個Font類的對象: 
Font Myfont=new Font("楷體",Font.BOLD,14); 
    Myfont是自己剛剛設置好的一個字體屬性,大小為14磅,類型為楷體,是加粗型,另外的兩種是Font.PLAIN, 正常型,Font.ITALIC,斜體。 
    選擇好字體後,就是設置字體了,設置字體用一個方法為:g.setFont(Myfont)就可以了,以後在沒有設置新的字體之前,都將會用這個已經設置好了的字體顯示字體。給大家舉下面一個例子,如下: 
    這個程序主要是講述如何在Applet中調用新的字體,新的字體風格,字體大小,新的顏色以及如何從網頁的Html語法代碼中獲得相應的屬性設置。
     

源代碼如下: 
import Java.awt.*; 
import Java.applet.*; 

public class Applet1 extends Applet 

   private String vname; 
private int vnumber; 
Color oldColor; 
Font oldFont; 
String[] paraname={"red","green","blue"};  //Html提供的三個參數的名稱 
int[] rgb=new int[3];                      //保存三色比例的數組 
   
public void init() 

vname=getParameter("vname");                //從網頁中獲得人名 
vnumber=Integer.parseInt(getParameter("vnumber"));//從網頁中獲得號碼 
for(int i=0;i<paraname.length;i++)         //取得Html文件中指定的三色比例 
rgb[i]=Integer.parseInt (getParameter(paraname[i]));//並轉化成整數付給數組 
 } 
    public void paint(Graphics g) 
 { 
 String fontname[]={"宋體","黑體","錄書"};//字體名字 
 String styname[]={"PLAIN","BOLD","ITALIC"};//字體風格名字 
 int fontstyle[]={Font.PLAIN ,Font.BOLD ,Font.ITALIC };//字體風格屬性 
 oldFont=g.getFont ();                  //獲得原來的缺省字體 
  for (int i=0;i<3;i++) 
  { 
   for (int j=0;j<3;j++) 
   {        //設置不同大小不同風格、類型的字體 
   g.setFont (new Font(fontname[i],fontstyle[j],12)); 
   g.drawString ("請注意我的變化 "+fontname[i]+"  "+ 
      styname[j],20,20*(i*3+j+1)); 
   } 
  }                //循環打印出各個風格與類型的字符串 
  g.setFont (oldFont);                   //恢復原來的缺省字體 
  oldColor=g.getColor ();                //保存原有的缺省顏色 
  g.drawString ("你好"+vname+",  你的號碼是:"+vnumber,40,210); 
        g.setColor (new Color (rgb[0],rgb[1],rgb[2]));    //設置新的顏色 
  g.drawString ("用的顏色是:"+g.getColor ().toString(),20,230); 
  //用新建顏色顯示該顏色的三色分量 
  g.setColor (oldColor);                //恢復原來的顏色 
  g.drawString ("以前的顏色是:"+g.getColor ().toString (),20,250);
  //用原來的顏色顯示原來顏色的三色分量 
 } 



編譯好這個文件後,在網頁中要做相應的設置,如下:  
     <applet code=Applet1.class width=320  
height=270  VIEWASTEXT> 
       < param name=vname value="張三"> 
       < <param name=vnumber value=4> 
       < param name=red  value=255> 
       < param name=green value=0> 
       < param name=blue value=0> 
      </applet> 


上面的程序中涉及到了Color類, Color類的使用方法為: 
Color Mycolor=new Color(int red,int Green,int blue); 
例如: 
Color Mycolor=new Color(0,0,255); 
這就是一個創建藍色的例子了。 
使用Java Applet訪問數據庫 
    學習任何的程序語言,當然都得與數據庫,Java剛剛誕生的時候,對數據庫的支持並不是很好,經過這幾年的發展,它對數據庫的支持也已經完全達到了成熟的境地。由於這裡主要是介紹Java Applet小程序, 因此,不可能用大的篇幅去給大家介紹數據庫的知識了,怎麼樣去建立與設計數據庫,還是請大家自己找點書看看吧!這兒,對不住了。 
    我們這兒以Microsoft Access數據庫為例子來說明怎麼實現一個數據庫的打開與讀取的知識。 
第一步: 
    使用Microsoft Access創建一個數據庫,也就是我的這個例子要用到的,內容就隨便了。 
第二步:也就是編程序了。 
1)定義變量,變量的定義如下:  
  TextArea theVisits=new TextArea (6,80);    
                              //顯示數據庫的內容  
  TextField theStatus=new TextFIEld ("",80);  
                            //顯示打開數據庫的信息。相當於程序的狀態欄  
  Connection theConnection; //數據庫的連接方法  
  Statement theStatement;   //代表一個發送到數據庫來執行的數據庫命令  
  ResultSet theResult;         //讀取的數據結果,也就是數據庫返回的結果  
  ResultSetMetaData theMetaData;  
                        //包含了有關數據庫命令執行後 返回結果的有用信息。  
  String theDataSource; //包含了被訪問數據庫或者數據源的名稱,用URL形式表示 . 
  String theUser;           //數據庫的用戶名  
  String thePassWord;      //數據庫的密碼  
2)實現界面,可以用開始時給大家介紹的方法來實現,界面的實現相對來說, 
比較的簡單了,如下: 
public void init()  
  { 
   add(theVisits);  
   add(theStatus); 
   theVisits.setEditable (false);   //設置文本區域不可以被用戶寫入
   theStatus.setEditable (false);   //設置文本區域不可以被用戶寫入
   openConnection();                //打開數據庫的連接 
   execSqlCommand("select * from MyTable");  //從數據庫中讀取內容 
   closeConnection();               //關閉已經打開的數據庫 
    } 
3)打開某個數據庫的連接 
public void openConnection() 
 { 
 theDataSource="jdbc:odbc:MyAccess"; 
 theUser=""; 
 thePassWord=""; 
 try 
 { 
 Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver"); 
theConnection=DriverManager.getConnection(theDataSource,theUser,thePassWord);
  theStatus.setText("Status:OK"); 
 } 
 catch (Exception e) 
  { 
  handleException(e); 
  } 
 } 

     包含數據源名稱的字符串格式為一個特殊的語句: 
jdbc:<subpotocol>:<subname> 
     協議 名jdbc必須提供,子協議和子名稱根據使用數據源類型而變化。
JDBC DriverManager使用子協議來選擇書記源響應的驅動程序。子協議 
的通常值為“odbc”和“Oracle“,子名稱包含了該驅動程序使用的附加 
信息。通常情況,該子名稱是某個網絡名稱,例如,用於其它Web服務: 
jdba:<subpotocol>://<host.domin><port>/<databasename> 
    驅動程序的說明應該指定子協議和子名稱的正確形式。使用ODBC時,主機 
和端口信息沒有必要提供,因為數據源總是配置在本地主機上。用於ODBC數據源的形式是  
jdbc:odbc:<data source name> 
    為了打開數據庫連接,用戶必須使用具體的驅動程序另外,驅動程序應該指 
定如何這樣做。如果正在使用JDBC-ODBC橋程序,那麼可以通過使用名為Class類 
的forName()方法來使用具體的JDBC-ODBC橋驅動程序。 
class.forName("sun.jdbc.JdbcOdbcDriver"); 
    然後,擁護可以告訴rManager打開數據源的連接,使用下列方法: 
theConnection=DriverManager.getConnection(theDataSource,theUser,thePassWord);
    getConnection()方法返回一個Connection對象,用戶應該保存這個對象, 
因為它是訪問數據源的方法。這裡,該對象保存到名為theConnection的字段中。 
    如果在打開連接過程中出現錯誤,則SQLexception作廢,通過在try-catch 
塊內打開連接的語句,擁護可以處理這種異常。通過使用後面要講的handleException(), 
在TextFIEld內顯示一個簡短的相應信息。  
4)執行SQL命令 
public void execSQLCommand(String command) 

 try{ 
  theStatement=theConnection.createStatement(); 
  theResult=theStatement.executeQuery (command); 
  theMetaData=theResult.getMetaData (); 
  int columnCount=theMetaData.getColumnCount (); 
  theVisits.setText(""); 
  while(theResult.next ()) 
  { 
   for(int i =1;i<=columnCount;i++) 
   { 
    String colValue=theResult.getString(i); 
    if(colValue==null)colValue=""; 
    theVisits.append (colValue+";"); 
   } 
   theVisits.append ("\n"); 
  } 
 }catch(Exception e) 
 { 
  handleException(e); 
 } 

    為了執行該命令,程序使用Connection對象的createStatement()方法創建 
一個可以有查詢的Statement。然後,它激活Statement對象的executiveQuery() 
方法,用來傳遞包含SQL查詢語句的字符串。從init()中傳送過來的參數—— 
Slect * from MyTable是一個簡單的數據庫查詢語言,如果你還不知道什麼意思, 
那麼請你還是查看一本有關數據庫的書吧,這些內容很多,不是我這兒一下子能說 
清楚的了。它的意思簡單的說,就是查找表——MyTable中的所有(*)信息。它會 
返回數據庫中的所有內容,並把它作為ResultSet訪問的結果。接著該程序激活ResultSet 
對象的getMetaData()方法。這時,返回一個ResultSetMetaData值,該值存儲在 
一個稱為theMetaData的變量中。使用ResultSetMetaData對象,可以獲得很多有用的 
數據;這裡該程序使用getColumnCount()方法獲得結果表中列的數量。最後,該程序反 
復使用該結果表,激活theResult的next()方法獲得結果表中的每一條記錄,只到該方法 
使用完全部記錄返回flase為止。 
5)關閉數據庫連接 
public void closeConnection() 
 { 
 try{ 
  theConnection.close (); 
  } 
  catch(Exception e) 
  { 
  handleException(e); 
  } 
 } 
    當用戶訪問完某個數據庫時,應該關閉數據庫連接,釋放與連接有關的資源。用戶創建 
的任何打開的ResultSet或者Statement對象將 自動關閉。另外,在關閉連接時可能發 
生一個SQLException,也放到後面處理。 
6)處理異常和錯誤 
public void handleException(Exception e) 
 { 
 theStatus.setText("Error:"+e.getMessage ()); 
 e.printStackTrace (); 
 if(e instanceof SQLException) 
  { 
  while((e=((SQLException)e).getNextException ())!=null) 
   { 
    System.out.println(e); 
   } 
  } 
 } 
    handleException()方法用來處理以上的錯誤和異常。該方法設置狀態TextFIEld包含與 
異常有關的錯誤消息,使用getMessage()方法獲得該消息。它還可以在System.out打印 
堆棧軌跡。

三 安裝ODBC數據源 
為了運行這個應用程序,用戶必須 首先創建一個與MyTable數據庫相對應的 ODBC數據源。 
為了通過ODBC使用Access,用戶必須安裝Access Odbc驅動程序。如果用戶沒有安裝該驅動 
程序,那麼還是先安裝吧,什麼,不會,不會也不行了,找一本書好好看看吧,這是肯定要 
看的。我這兒簡單的給你說一下吧: 
1.從控制面板中選擇ODBC-32,雙擊(要是沒有這個圖標,那我真的沒有辦法了,它在安裝 
數據庫的時候,應該會安裝上的,否則就只能找一張數據庫系統的安裝盤,找到ODBC驅動程 
序進行安裝)。 
2.單擊添加,選擇Microsoft Access Driver。(如果這個圖標也沒有,那麼你的機器是嚴 
重缺乏營養,趕緊裝數據庫必須的軟件,先裝Access,這兒要用) 
3.輸入你要使用的數據源的名稱(如果沒有,那就得先創建,我這兒就不說Access的使用方 
法了)。描述就隨便你了。 
4.單擊選擇按鈕選擇你已經創建好了的Access數據庫的文件。 
5.點確定就可以了。如果你想為你數據庫保密的話,可以加上用戶名和密碼。(在高級選項裡面)。 
        要說明一點的是,如果你用VJ++編輯的此程序,要是運行不了,那就是數據庫的連接沒有設 
置好,怎麼將數據庫設計好,以後再說吧。另外,VJ++有它自己的數據庫驅動程序。很適合與 
VJ++一起使用,可惜介紹這方面的書好象不是很多。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved