小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java圖形界面應(yīng)用程序

 Ethan的博客 2011-01-05

圖形界面應(yīng)用程序

java中各種圖形組件如按鈕對(duì)話框都是Component類的子類,放在容器(Container)中。java中的容器有兩類:窗口Window和面板Panel。窗口是可以獨(dú)立存在的容器,Panel必須放在其他容器中,如窗口或?yàn)g覽器窗口中。

窗口有兩類,一類是具有標(biāo)題欄、最大化、最小化、按鈕的Frame,另一類是對(duì)話框Dialog。

使用Frame的主要步驟是:

import java.awt.*;

Frame fr=new Frame(“MyTest”);

fr.setSize(500,500);

fr.pack(); //自動(dòng)調(diào)整窗口大小

fr.setVisible(true);

其他,fr.setBackGround(Color.blue); 設(shè)置背景顏色

常用圖形組件

按鈕 Button

 Button x=new Button(“abcd”);

 Frame f=new Frame(“test”);

 Panel p=new Panel();

 p.add(x);   f.add(p);  f.pack();  f.setVisible(true);

復(fù)選框 Checkbox

Checkbox c=new Checkbox(“test”,true); 第二個(gè)參數(shù)表示默認(rèn)選中,否則為false

單選項(xiàng) Radio

CheckboxGroup g=new CheckboxGroup();

Checkbox c=new Checkbox(“test”,g,true); //添加了一個(gè)組分類g

下拉列表框

Choice c=new Choice();

c.addItem(“test”);

列表框

跟下拉列表框類似,只是可以一次顯示多行,自動(dòng)生成滾動(dòng)條。

List t=new List(4,true); 4表示行數(shù),true表示支持多選。

t.add(“test”); //添加超過四個(gè)時(shí),自動(dòng)生成滾動(dòng)條。

對(duì)話框

對(duì)話框和Frame都是窗口類型,對(duì)話框和Frame相關(guān)聯(lián),但不是放在Frame中。

Frame f=new Frame(“MyFrame”);

Dialog d=new Dialog(f, “Test” ,true);

第一個(gè)參數(shù)為與之相關(guān)聯(lián)的Frame,第三個(gè)參數(shù)表示對(duì)話框處理完畢才可以和Frame交互。就像Word軟件,選擇“文件/打開”之后出現(xiàn)的對(duì)話框。

文件對(duì)話框

文件對(duì)話框顯示一個(gè)對(duì)話框讓用戶選擇文件,該對(duì)話框用于點(diǎn)擊打開文件時(shí)調(diào)用。語(yǔ)法結(jié)構(gòu)為:

FileDialog d=new FileDialog(f, “Test”);

用戶選擇了哪個(gè)文件可由對(duì)話框方法getDirectory()和getFile()獲得。返回為字符串。

如:String s=d.getDirectory()+d.getFile();

標(biāo)簽

Label l=new Label(“test”);

滾動(dòng)面板

對(duì)于較大的圖形界面,可以放在滾動(dòng)面板中,然后將滾動(dòng)面板放在Frame中。

Frame f=new Frame(“MyFrame”);

ScrollPane sp=new ScrollPane();

Panel p=new Panel();

f.add(sp);

sp.add(p);

單行文本框

TextField t=new TextField(String s,int length);

多行文本輸入框

TextArea t=new TextArea(String s,int row,int width);

菜單

在Frame中設(shè)置菜單欄-》菜單欄中添加菜單-》菜單中添加菜單項(xiàng)。

Frame f=new Frame(“Menu”);

MenuBar mb=new MenuBar();

Menu m1=new Menu(“File”);

MenuItem m11=new MenuItem(“Open”);

MenuItem m12=new MenuItem(“Save”);

m1.add(m11);

m1.add(m12);

mb.add(m1);

f.setMenuBar(mb);

分隔符:m1.addSeparator();

菜單選中:如自動(dòng)換行。使用CheckBoxMenuItem.

快捷菜單(常用于右鍵單擊)

對(duì)于不需要放在固定位置的快捷菜單,可以使用PopupMenu來實(shí)現(xiàn),和普通菜單Menu的使用方法一樣,可以添加各種菜單項(xiàng)、選擇項(xiàng)、分隔符等。使用show()方法可以指定快捷菜單的顯示位置。通常讀取鼠標(biāo)右擊的位置來確定快捷菜單在何處顯示。

Frame f=new Frame(“Menu”);

PopupMenu m1=new PopupMenu(“File”);

MenuItem m11=new MenuItem(“Open”);

MenuItem m12=new MenuItem(“Save”);

m1.add(m11);

m1.add(m12);

f.add(m1);   m1.show(f,20,50); 第一個(gè)參數(shù)是各種組件,后面兩個(gè)參數(shù)是快捷菜單相對(duì)于第一個(gè)組件的相對(duì)顯示位置。

布局

流布局

流布局從左到右,自上而下的順序放置組件。其使用方式是:

其語(yǔ)法結(jié)構(gòu)為:

FlowLayout t=new FlowLayout();

或FlowLayout t=new FlowLayout(FlowLayout.RIGHT);

或FlowLayout t=new FlowLayout(FlowLayout.LEFT,10,20);

后邊兩個(gè)參數(shù)表示組件左右、上下間隔多少像素。

使用:f.setLayout(t); 或者f.setLayout(new FlowLayout());

邊界布局

 

網(wǎng)格布局

 

卡片布局

 

網(wǎng)格包布局

 

繪圖操作

Java中使用Graphics對(duì)象可以進(jìn)行各種繪圖操作。定義Panel的子類,重寫paint()方法。在該方法的參數(shù)中只有一個(gè)Graphics對(duì)象。窗口刷新時(shí)自動(dòng)執(zhí)行paint()方法。

import java.awt.*;

public class TestDraw extends Panel{

public static void main(String args[]){

  Frame f=new Frame(“My Drawing”);

  TestDraw mc=new TestDraw();

  f.add(“Center”,mc);

  f.setSize(150,150);

  f.setVisible(true);

}

public void paint(Graphics g){

  System.out.println(“repainted”);

  Font f=new Font(“TimesRoman”,Font.BOLD,18);

  g.setFont(f); //設(shè)置字體

  g.drawString(“hello”,10,50); //寫hello

  g.drawOval(50,50,30,30);  //畫橢圓

  g.fillRect(100,100,20,30);  //畫有填充的長(zhǎng)方形

}

}

事件處理

用戶單擊按鈕,自動(dòng)產(chǎn)生的對(duì)象為ActionEvent,自動(dòng)執(zhí)行ActionPerformed()方法;按動(dòng)鍵盤,自動(dòng)產(chǎn)生的對(duì)象為KeyEvent,自動(dòng)執(zhí)行KeyPressed(),KeyReleased(),KeyTyped()方法。

按鈕事件處理

對(duì)于鼠標(biāo)單擊按鈕的事件,編寫事件處理器時(shí)需要實(shí)現(xiàn)的接口為:ActionListener,該接口中只有一個(gè)方法需要實(shí)現(xiàn):ActionPerformed(ActionEvent e)。程序可以如下:

import java.awt.event.*;

class xx implements ActionListener{

public void actionPerformed(ActionEvent e){

  System.out.println(e.getActionCommand()); //可以獲得用戶單擊的按鈕所對(duì)應(yīng)的字符串。

}

}

按鈕添加監(jiān)聽:button.addActionListener(事件處理器);

鍵盤處理事件

import java.awt.*;

import java.awt.event.*;

public class XX implements KeyListener{ //接口

 public void keyTyped(KeyEvent ev){  //接口方法

char c=ev.getKeyChar();

System.out.println(“keyTyped”+c);

}

public void keyPressed(KeyEvent ev){

 ……………

}

public void keyRealeased(KeyEvent ev){

 ………………..

}

}

鼠標(biāo)事件的處理

實(shí)現(xiàn)的接口有兩類:一類是MouseListener,它處理鼠標(biāo)單擊以及鼠標(biāo)進(jìn)出操作;另一類是MouseMotionListener,它處理鼠標(biāo)拖動(dòng)和移動(dòng)操作。使用時(shí)可以實(shí)現(xiàn)其中的一個(gè)接口,也可以兩個(gè)都實(shí)現(xiàn)。

對(duì)于MouseMotionListener,拖動(dòng)鼠標(biāo)將執(zhí)行mouseDragged(),移動(dòng)鼠標(biāo)將執(zhí)行mouseMoved()。

對(duì)于MouseListener,鼠標(biāo)按鈕按下將執(zhí)行mousePressed(),鼠標(biāo)按鈕釋放將執(zhí)行mouseReleased(),鼠標(biāo)按鈕單擊將 執(zhí)行mouseClicked(),鼠標(biāo)進(jìn)入組件所在區(qū)域?qū)?zhí)行mouseEntered(),鼠標(biāo)離開組件將執(zhí)行mouseExited()。

方法的參數(shù)為MouseEvent,通過其getX()和getY()方法可以獲得鼠標(biāo)的位置,getClickCount()方法可獲得單擊次數(shù),通過 paramString()方法可以獲得各種參數(shù),包括單擊的模式,由此可判斷鼠標(biāo)操作使用的是左按鈕還是右按鈕或中間按鈕。

import java.awt.*;

import java.awt.event.*;

public class xx implemets MouseListener,MouseMotionListener{

 對(duì)某一組件添加監(jiān)聽。

 public void mouseMoved(MouseEvent ev){

  int x=ev.getX();

  int y=ev.getY();

  System.out.println(“mouseMoved”+x+y);

}

………………………….其它方法類似

}

窗口事件處理

接口:WindowListener。

方法:打開執(zhí)行windowOpened(),單擊窗口右上角關(guān)閉按鈕執(zhí)行windowClosing(),單擊最小化按鈕執(zhí)行 windowIconified()和windowDeactivated(),鼠標(biāo)單擊其他窗口也會(huì)執(zhí)行windowDeactivated(),由最 小化恢復(fù)會(huì)執(zhí)行windowDeiconified()和windowActivated(),當(dāng)前窗口為其他窗口時(shí)單擊該窗口,也會(huì)執(zhí)行 windowActivated(),窗口被關(guān)閉,則執(zhí)行windowClosed().

方法參數(shù):WindowEvent e

選項(xiàng)事件的處理

單選按鈕、復(fù)選框、下拉列表、列表框、菜單中每個(gè)選項(xiàng)或菜單項(xiàng)都可以使用選項(xiàng)事件進(jìn)行處理。

接口:ItemListener,每當(dāng)選擇某個(gè)選項(xiàng),便會(huì)自動(dòng)執(zhí)行itemStateChanged()方法,該方法的參數(shù)為ItemEvent。其 getItem()方法可以獲得選項(xiàng)對(duì)應(yīng)的字符串,getStateChange()方法可以獲得選項(xiàng)是選中(值為 ItemEvent.SELECTED)還是未選中(值為ItemEvent.DESELECTED)。

添加監(jiān)聽:.addItemListener(this);

動(dòng)作事件的處理(文本框)

ActionListener除了用于鼠標(biāo)單擊按鈕外,單行文本框中的回車、列表框中雙擊選擇某個(gè)選項(xiàng)也可以用其處理。

import java.awt.*;

import java.awt.event.*;

class xx implements ActionListener{

 TextField t=new TextField(“you can enter here”,35);

 t.addActionListener(this);  //即單行文本框可以自動(dòng)監(jiān)聽。

 ……………

 public void actionPerformed(ActionPerformed e){

String s=t.getText();

System.out.println(s);

}

}

注意:對(duì)于多行文本框TextArea,不能自動(dòng)監(jiān)聽,可以添加按鈕來實(shí)現(xiàn)檢查和提交功能。

多個(gè)事件處理器

如果對(duì)一個(gè)組件添加多個(gè)事件處理器,則需要對(duì)每一個(gè)處理器創(chuàng)建一個(gè)類。

import java.awt.*;

import java.awt.event.*;

public class TwoListener{

 Button b=new Button(“ok”);

 b.addActionListener(new xx());

 b.addActionListener(new yy());

}

public class xx implements ActionListener{

 public void actionPerformed(ActionEvent t){

 System.out.println(“First”+t.getActionCommand);

}

}

public class yy implements ActionListener{

 public void actionPerformed(ActionEvent t){

 System.out.println(“Second”+t.getActionCommand);

}

}

Adapter

事件處理器實(shí)現(xiàn)的接口中往往有多個(gè)方法要實(shí)現(xiàn),而某個(gè)具體程序用到的可能只是其中的一個(gè),但實(shí)現(xiàn)接口時(shí)根據(jù)接口的語(yǔ)法規(guī)則必須把所有方法都實(shí)現(xiàn),因此程序中不使用的方法要寫空語(yǔ)句。

為了簡(jiǎn)化程序,java中預(yù)定義了一些特殊的類,這些類應(yīng)經(jīng)實(shí)現(xiàn)了相應(yīng)的接口,方法中已經(jīng)寫上空語(yǔ)句,使用時(shí)只要將事件處理器作為子類(使用 extends,而不是implements)即可。命名規(guī)則:只要將接口中的Listener改為Adapter即可。對(duì)于只有一個(gè)方法需要實(shí)現(xiàn)的接 口,沒有Adapter。

public class xx extends WindowAdapter implements WindowListener{

}

通過鼠標(biāo)雙擊直接運(yùn)行java程序

DOS下可以用javac *.java來編譯java文件,使用java 類名 來執(zhí)行程序。

制作jar文件

雙擊直接運(yùn)行java程序。

比如有MyFrame.java一文件。

javac MyFrame.java編譯生成MyFrame.class

然后做一個(gè)配置文件,隨意起一個(gè)文件名如conf.txt,該文件中輸入一行內(nèi)容:

Main-Class: MyFrame

注意:文件開頭頂格,不可有空行空格,Main-Class:后有一空格。該配置文件給出了雙擊jar文件時(shí)運(yùn)行其中的哪個(gè)類。

然后輸入如下命令制作jar文件:

jar cmf conf.txt MyFrame.jar *.class

這樣將創(chuàng)建MyFrame.jar,以后只要雙擊即可執(zhí)行。

使用批處理制作

運(yùn)行jar文件

java –jar MyFrame.jar

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多