亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

Java學習第一個圖形界面

2019-11-18 11:50:08
字體:
來源:轉載
供稿:網友

  學了幾天java,就迫不及待地想進入圖形界面,因為圖形界面可以給人一個直觀的視覺效應,假如自己在記事本中寫的一行行枯燥的代碼可以變成漂亮的圖形,那該是一種什么感受??!下面我將會分步驟講解一個畫圖程序,供大家參考。
  首先構思一個畫圖程序的界面
  
 Java學習第一個圖形界面(圖一)


  假設這個程序的界面如上所示,文件菜單中有清屏、打印和退出功能,這個程序的主要功能就是可以完成畫圖的功能,如圖所示,可以畫紅色、綠色、藍色、黑色的圖形,可選的圖形先假設有矩形和橢圓形,Filled的功能為是否填充封閉圖象。
  在開始創建圖形界面前,先介紹一下創建圖形的基本知識。
  Frame,也叫框架,它是由一個包括最大化、最小化、關閉和Frame名稱所組成的一個框架運行界面。Panel,也叫面板,將Panel添加在Frame上可以使得許多事情變得輕易解決,這一點我們將在后面看到,如下,是一個將100×100的Panel添加到200×200的Frame上的界面,注重,為什么Panel顯示的是一個矩形框?這是由于原點選取的是包括標題行最左上角的(0,0)。
  
 Java學習第一個圖形界面(圖二)

  Frame的默認布局治理器為邊界布局治理器,Panel的默認布局治理器為流式布局治理器,所謂的布局治理器分為好多種,最常見的有流式布局治理器(FlowLayout)、邊界布局治理器(BorderLayout)和表格布局治理器(GridLayout)。
  1.流式布局治理器是將組件流水似的擺放在Frame或其它構件上,從左到右,依次排放,碰到邊界就重新另起行,順序排放,整體置放在中心的位置。如下所示(這是將Button添加到Frame上,由于Frame的默認布局治理器不是FlowLayout,所以要進行相應的修改,修改方法將在后面介紹):
  
 Java學習第一個圖形界面(圖三)

  將Frame拉大的時候上圖5個Button將順序擺放在Frame中部,排成一行,而將Frame縮小的時候,將顯示成下圖的狀態:
  
 Java學習第一個圖形界面(圖四)

  五個Button始終還是順序排放的,只不過在一行中擺放不下的時候將換行排放。
  2.邊界布局治理器則將板塊分為東西南北中五個方向,每添加一個組件就要指定組件擺放的方位,放置在東西南北四個方向的組件將貼邊放置,如下所示:
  
 Java學習第一個圖形界面(圖五)

  當拉大Frame的時候,處在center(中間)的組件就不斷積壓東西南北四個方向的組件,如下圖所示,Button4和Button3只是拉長而寬度不變,而Button1和Button2只是拉寬,而長度不變,Button5則是長寬都變化:
  
 Java學習第一個圖形界面(圖六)

  3.表格布局治理器就是分幾行幾列將部件擺放到Frame上去,幾個部件也是貼邊放置的,如下圖所示,將6個Button按2行3列排放:
  
 Java學習第一個圖形界面(圖七)

  將Frame拉大了的結果如下
  
Java學習第一個圖形界面(圖八)

  上面提到了關于修改布局治理器的問題,Frame的默認布局治理器是邊界布局治理器,假如要將它轉化成FlowLayout或者GridLayout甚至null的布局治理方式應該如何處理呢?java給我們提供了修改的方法,假設創建的Frame對象為f,那么將其修改成FlowLayout的方法就是f.setLayout(new FlowLayout()),而假如修改成null,則只需要寫成f.setLayout(null)即可。
  有了以上的知識,我們就可以開始進行我們的圖形創作了,
  首先要添加一個MenuBar,也就是菜單項,雖然Frame是默認BorderLayout的,但是也沒有必要將MenuBar放置在最上面,因為MenuBar默認就是一定要放在最上方的,即使是再添加一個置于NORTH的部件,也是位于MenuBar下方的。
  中間我們留出的主要部分是畫圖用的,需要較大的空間,所以放置在CENTER部位。
  下方的部件比較多,也比較復雜。選擇圖形類型的部件叫做Choice,單選框和復選框都叫做Checkbox,不同的地方是,對于單選框而言,要添加一個叫CheckboxGroup的部件將單選框圈在其范圍內,這樣我們就可以完成單選的功能了。于是,需要放在最下方的部件有3個之多,那么,假如都使用BorderLayout.SOUTH的話,幾個部件將疊加在一起,我們就只能夠看見最上方的部件,這樣的結果顯然不是我們希望的。那么怎么處理這個問題呢?我們知道Panel的默認布局治理器是FlowLayout的,那么假如我們將一個Panel加在Frame的最南端,然后依次加入Choice和Checkbox單選框和復選框,那么問題就可以解決。
  現在,讓我們來著手做我們自己的圖形界面吧!
  首先要引入java.awt.*,這個包是基本的圖形包,如Frame,Panel都在這個包中。引用方法為:import java.awt.*;
  接下來你可以創建一個叫做Drawing的類,讓它繼續原包中有的Frame類,在Drawing類中,可以添加自己想要的功能以完善這個Frame,繼續用extends來操縱,如下:
  public class Drawing extends Frame
  {
   Drawing(String ss)
    {
       setTitle(ss); //設置標題
       setVisible( true );
    }
   
    public static void main(String args[])
       {
           Drawing d = new Drawing("Paint        }
  }
  在main函數中創建了一個Drawing的對象,命名為d,并傳遞這個Frame的標題名,類Drawing中的Drawing(String ss)表示對Drawing重新構造了一遍,Drawing(String ss)稱為過載,ss接受main函數傳遞過來的字符串。假如不使用過載方式也可以完成,程序如下修改即可:
  public class Drawing extends Frame
  {
    Drawing()
    {
       setTitle("Paint Program");
       setVisible( true );
    }
   
    public static void main(String args[])
       {
           Drawing d = new Drawing();
       }
  }
  
  由于Drawing繼續了Frame,所以Drawing本身也是一個Frame,所以它可以設置標題(setTitle(ss)),可以添加組件?,F在程序就已經可以運行了,但只會是一塊白板,什么都沒有,大家有愛好的話可以試一下。記住,setVisible(true)這句話不可省略,假如省略,就什么都看不見了。
  假如按照上面嘗試運行了一下,你就會發現這個程序還是有很多弊病的,例如圖象沒有馬上顯現出來,要將Frame拉開(或者點最大化)才可以看得見那塊白板,更要命的就是程序無法關閉,因為對關閉程序內容我們并沒有做任何處理,你需要到任務治理器中找到一個叫javaw.exe或java.exe的線程,將它關閉才可以,這給我們帶來了很多的麻煩,那么怎么解決這些問題呢?首先,我們可以設置Frame的大小,并且還可以將它設置為不可修改大小的,添加如下兩條語句即可:
  setSize (400,400); //設置大小
  setResizable( false ); //將大小改為不可更改的
  那么如何完成關閉程序的功能呢?我們需要調用一個系統的監聽,如下添加:
  addWindowListener( new WindowAdapter(){
   public void windowClosing( WindowEvent e ){
       System.exit( 0 );
       }
    });//增加關閉程序功能
  這樣調用的一個Frame的addWindowListener方法進行關閉處理,就可以滿足我們的需求了,這個方法是系統提供的,完成的就是關閉程序的功能。
  下面,我將講解將如何描述MenuDown、MenuUp和Draw類。因為這三個類都是放置在剛才我們創建的Drawing上的,為了方便調用,我們可以將這三個類放置在Drawing類中,這叫做內部類。下面,我們先創建一個菜單類—MenuUp:
    class MenuUp extends MenuBar
    {
       public MenuUp(){
           Menu m1 = new Menu( "File" );
           Menu m2 = new Menu( "Help" ); //創建兩個菜單目錄項
           MenuItem mi1 = new MenuItem( "Clear" );
           MenuItem mi2 = new MenuItem( "Print" );
           MenuItem mi3 = new MenuItem( "Quit" ); //創建3個菜單項
           m1.add( mi1 );
           m1.add( mi2 );
           m1.addSeparator();
           m1.add( mi3 ); //將3個菜單項添加到名為File的菜單下,并加分隔符
           add( m1 );
           add( m2 );
           setHelpMenu( m2 ); //將菜單目錄項添加到MenuBar中
       }
    }
  
  首先,類MenuUp繼續了MenuBar類的性質,所謂的MenuBar就是類庫中已經創建好的可供繼續和使用的類,它的默認放置是在面板中的最上端,可以為它添加菜單項,這個可以由用戶自行編寫,如上,我們創建了兩個菜單目錄項,即File和Help,注重,由于Help是一個非凡的菜單,一般放置在菜單欄的最末位,所以添加的時候也需要注重,要添加一條setHelpMenu()的語句。程序中的“對象.add()”表示在對象中添置一些其它的對象,“對象.addSeparator()”是指添加分隔符的意思。
  
  創建好這個類后,在Drawing(String ss)中要添加一條setMenuBar( new

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品免费一区二区三区| 国产性猛交xxxx免费看久久| 亚洲自拍偷拍色片视频| 国产欧美在线看| 日韩av在线免播放器| 色综合五月天导航| 国内精品小视频在线观看| 日韩h在线观看| 亚洲人成毛片在线播放| 最近2019中文字幕mv免费看| 久久99精品久久久久久琪琪| 国自产精品手机在线观看视频| 亚洲免费av片| 日韩av不卡在线| 国内偷自视频区视频综合| 国产综合视频在线观看| 欧美国产视频一区二区| 欧美日韩久久久久| 国产成人综合av| 国产午夜精品美女视频明星a级| 欧美激情二区三区| 日韩欧美成人免费视频| 国产成人在线亚洲欧美| 欧洲成人免费aa| 欧美成在线观看| 欧美午夜片在线免费观看| 51色欧美片视频在线观看| 国产精品av网站| 欧美韩国理论所午夜片917电影| 久久免费福利视频| 欧美日韩一区二区三区在线免费观看| 国产精品高潮粉嫩av| 国产美女精品视频免费观看| 亚洲日韩第一页| 国外成人性视频| 欧美丝袜一区二区三区| 黑人巨大精品欧美一区二区| 欧美最猛性xxxx| 久久久精品一区二区三区| 欧美精品精品精品精品免费| 国产亚洲精品综合一区91| 久久夜色精品亚洲噜噜国产mv| 国产成人精品在线视频| 欧美高跟鞋交xxxxhd| 欧美亚洲成人网| 亚洲成av人片在线观看香蕉| 欧美性猛交xxxx乱大交蜜桃| 亚洲丝袜一区在线| 国产欧美日韩亚洲精品| 欧美中文在线观看| 欧美大片在线看| 欧美精品videosex极品1| 国产一区二区三区免费视频| 日韩av影片在线观看| 国产精品入口免费视频一| 97久久精品视频| 日韩小视频在线| 欧美日韩成人精品| 视频在线观看一区二区| 91大神在线播放精品| 91亚洲一区精品| 久久久久久网址| 午夜精品99久久免费| 欧美黑人视频一区| 国产精品久久久久免费a∨| 欧美精品久久久久久久免费观看| www欧美日韩| 国产精品美女免费视频| 91av在线国产| 欧美一级在线亚洲天堂| 深夜福利91大全| 国产精品va在线播放| 久久中文字幕一区| 萌白酱国产一区二区| 国产亚洲视频在线| 亚洲精品国产福利| 欧美日韩另类视频| 亚洲日本成人网| 中文字幕精品www乱入免费视频| 日韩精品亚洲精品| 青青精品视频播放| 大胆人体色综合| 亚洲国产小视频| 8x海外华人永久免费日韩内陆视频| 国产亚洲欧美另类中文| 97超视频免费观看| 精品香蕉一区二区三区| 国产精品第3页| 国产一区二区香蕉| 国产在线一区二区三区| 日本成人黄色片| 国产精品96久久久久久| 成人免费大片黄在线播放| 国产不卡视频在线| 欧美日韩国产精品| 成人福利免费观看| 欧美日本高清一区| www.日韩不卡电影av| 中日韩美女免费视频网站在线观看| 欧美精品www| 夜夜躁日日躁狠狠久久88av| 久久精品一区中文字幕| 亚洲成人久久一区| 亚洲精品美女在线观看播放| 久久视频精品在线| 91天堂在线观看| 欧美另类老女人| 国产精品青草久久久久福利99| 最近2019年好看中文字幕视频| 亚洲成av人乱码色午夜| 日韩av大片免费看| 日韩一区二区精品视频| 久久色精品视频| 亚洲图片在线综合| 久久久久国产一区二区三区| 亚洲一区二区精品| 亚洲精品二三区| 国产精品99一区| 欧美日韩国产成人在线观看| 久久中国妇女中文字幕| 久久久久久久久久久免费精品| 欧美放荡办公室videos4k| 国产精品久久久久久久app| 欧美在线观看www| 国产在线精品播放| 2019中文字幕免费视频| 日韩av资源在线播放| 成人免费视频xnxx.com| 亚洲japanese制服美女| 欧美激情videoshd| 久久精品国产亚洲一区二区| 91久久久亚洲精品| 久久精品中文字幕一区| 精品国产欧美成人夜夜嗨| 亚洲精品www久久久久久广东| 国产精品第一页在线| 亚洲精品98久久久久久中文字幕| 欧洲美女7788成人免费视频| 欧美国产高跟鞋裸体秀xxxhd| 最新国产精品亚洲| 亚洲视频精品在线| 日韩精品免费在线视频| 久久理论片午夜琪琪电影网| 国产精品96久久久久久| 色哟哟入口国产精品| 九九久久久久99精品| 国产成人一区二区| 国产精品中文久久久久久久| 狠狠躁夜夜躁人人躁婷婷91| 欧美激情喷水视频| 96pao国产成视频永久免费| 亚洲欧洲在线播放| 国产一区二区三区久久精品| 精品国产91久久久| 欧美日韩另类字幕中文| 97色在线观看| 久久久最新网址| 精品久久在线播放| 国产午夜精品全部视频播放| 欧美午夜女人视频在线| 欧美激情2020午夜免费观看| 在线看福利67194| 国产精品久久久久久av福利软件| 精品二区三区线观看|