国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java應用程序中圖象按鈕

2019-11-18 11:51:15
字體:
來源:轉載
供稿:網友

  java的王牌是它的AWT,這是面向對象的圖形用戶接口(GUI)框架。但是Java的
  AWT只包括較簡單的構件,它不包括位圖菜單和位圖按
  鈕的標準控件。如何在自己的Java應用程序中加上圖像按鈕呢?筆者經過摸索,發
  現了以下兩種方法。
  
    1.預備圖標資源
  
    在Java應用程序中,AWT提供的按鈕標準控件(Button類)只能顯示字符串。若
  要顯示圖像按鈕,只有把每一個圖像按鈕都設計成對應一個或一組圖形。因此,在
  做一個按鈕之前,要預備好一系列的圖像文件。這些文件最好是JPEG或GIF格式的
  。假如是其他格式,則需轉換,否則,得自己編制一個專門類加在自己的Java應用程
  序中。這些圖像資源可以直接從其他應用程序中拷貝過來,也可以使用一些圖形編
  輯軟件(如Adobe photoshop,Picture Publisher等)來編輯。
  
    2.繪制圖像按鈕
  
    在獲取圖像之后,我們現在就可以考慮編制程序的問題了。在Java中裝載、顯
  示圖像有兩種方法。一種是使用Applet類中的getImage(String)函數,載入方法如
  下所示:
  
      Image myImg=getImage(URL,"ImageName");
  
    另一種是使用ToolKit類中的getImage(String)函數。載入方法如下所示:
  
      Image myImg =ToolKit.getDefaultToolKit().getImage(URL,"ImageNa
  me");
  
    在完成裝載圖像工作后,即可用兩種方法設計圖像按鈕。
  
    (1)方法一
  
    把按鈕的按下和釋放兩個動作設計成隨著鼠標動作變化的輪換顯示的兩個圖
  像,Img1,Img2。首先,我們設計一個ImageButton構件類,它繼續Canvas類,把上述
  兩個圖像放在這個ImageButton類之中。其次,再設計一個setImage(String)函數
  ,也把它加入ImageButton類中。它的功能是能夠設置ImageButton構件當前顯示的
  圖像。當判定出是按鈕按下時,就改變當前按鈕圖像為按鈕按下時的圖像。這樣,
  一個ImageButton類就對應一個圖像按鈕的所有圖像信息和基本操作。最后,可以
  在一個Panel構件中,加入許多這樣的ImageButton構件,再把Panel構件按照布局管
  理器的規定放在Frame類或其他容器中。具體設計如下:
  
  import java.awt.*;
  ……
  class ImageButton extends Canvas{ //定義一個圖像按鈕類
  Image image;
  //按鈕上的圖像
  Dimension PReferredSize;
  //按鈕的尺寸大小
  ImageButton(Image img,int x,int y){
  image=img;
  preferredSize=new Dimension();
  preferredSize.width=x;
  preferredSize.height=y;
  }
  public void paint(Graphics g){ //繪制圖像按鈕
  g.drawRect(0,0,preferredSize.width,preferredSize.hei
  ght);
  g.drawImage(image,0,0,this);
  }
  public void setImage(Image img){ //設置新圖像
  image=img;
  repaint();
  }
  ……
  }//****** End of ImageButton ******
  ……
  
    (2)方法二
  
    直接設計一個ImageButton 構件類,它繼續Canvas類,在其內部通過對按鈕的
  按下或釋放的判定來改變按鈕輪廓的明暗邊界。當判定出按鈕按下時,就改變按鈕
  邊框的明暗布局。這樣,就動態地實現了一個按鈕按下和釋放的過程。然后我們可
  以把圖像裱貼在按鈕的中心位置,這就實現了圖像按鈕的功能。其中,設計一個se
  tPush(booleanPush)函數,也把它加入ImageButton類中。它的功能是設置圖像按
  鈕構件當前按下或釋放狀態。最后,可以在一個Panel構件中,加入許多這樣的Ima
  geButton構件。具體設計如下:
  
  class ButtonCanvas extends Canvas{
  boolean tPush;
  Dimension ps;
  Image img;
  ButtonCanvas(Image image,int x,int y){
  img=image;
  ps=new Dimension();
  ps.width=x;
  ps.height=y;
  }
  public void setPush(boolean tt){
  tPush=tt;
  repaint();
  }
  public void paint(Graphics g){
  //繪制按鈕邊界和背景
  g.drawRect(0,0,ps.width-1,ps.height-1);
  setBackground(Color.gray);
  g.setColor(Color.gray.brighter());
  g.fillRect(2,2,ps.width-3,ps.height-3);
  //*** 在畫布上繪制按鈕 按下或釋放 ***
  if(!tPush){
  g.setColor(Color.gray.darker());
  g.drawLine(ps.width-2,1,ps.width-2,ps.height-2);
  g.drawLine(1,ps.height-2,ps.width-2,ps.height-2);
  g.setColor(Color.white);
  g.drawLine(1,1,ps.width-2,1);
  g.drawLine(1,1,1,ps.height-2);
  }
  else{
  g.setColor(Color.white);
  g.drawLine(ps.width-2,1,ps.width-2,ps.height-2);
  g.drawLine(1,ps.height-2,ps.width-2,ps.height-2);
  g.setColor(Color.gray.darker());
  g.drawLine(1,1,ps.width-2,1);
  g.drawLine(1,1,1,ps.height-2);
  }
  //**** 在按鈕中心加載圖像 ******
  g.drawImage(img,
  ps.width/2-img.getWidth(this)/2,
  ps.height/2-img.getHeight(this)/2,this);
  }// end of paint()
  }// end of ButtonCanvas
  
    3.編制響應程序
  
    事件處理是GUI編程的核心。對于Applet 小程序,它的事件捕捉和處理比應用
  程序簡單。可把捕捉程序放在其GUI構件的子類之中,也可以把捕捉程序放在構件
  的容器之中。筆者采用后一方法。
  
  ……
  public class MyTest extends Frame
  ……//事件響應函數
  public boolean handleEvent(Event evt)
  {
  switch (evt.id)
  {
  ……
  case Event.MOUSE_DOWN:
  if(evt.target instanceof Canvas){
  if(evt.target==ImageClossButton){
  ImageClossButton.setPush(true);
  mTextArea.setText("按下");
  }
  return true;
  case Event.MOUSE_UP:
  if(evt.target instanceof Canvas){
  if(evt.target==ImageClossButton){
  ButCvs.setPush(false);
  mTextArea.setText("釋放");
  }
  return true;
  default:
  return super.handleEvent(evt);
  }
  } // End of handleEvent
  } // End of Frame

上一篇:Java教程

下一篇:初學者的JAVA

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南雄市| 介休市| 寻甸| 吉安县| 平武县| 宣武区| 施秉县| 胶州市| 仁寿县| 永济市| 吴忠市| 扬中市| 宜春市| 隆昌县| 美姑县| 射洪县| 长丰县| 宣武区| 正宁县| 南川市| 苍山县| 卢湾区| 闻喜县| 天等县| 老河口市| 修水县| 唐山市| 正定县| 北票市| 容城县| 临邑县| 鱼台县| 梁山县| 汉源县| 宣武区| 册亨县| 蒙阴县| 枣强县| 塘沽区| 子洲县| 武胜县|