java图形界面应用程序(转)
生活随笔
收集整理的這篇文章主要介紹了
java图形界面应用程序(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
圖形界面應用程序
java中各種圖形組件如按鈕對話框都是Component類的子類,放在容器(Container)中。java中的容器有兩類:窗口Window和面板Panel。窗口是可以獨立存在的容器,Panel必須放在其他容器中,如窗口或瀏覽器窗口中。
窗口有兩類,一類是具有標題欄、最大化、最小化、按鈕的Frame,另一類是對話框Dialog。
使用Frame的主要步驟是:
import java.awt.*;
Frame fr=new Frame(“MyTest”);
fr.setSize(500,500);
fr.pack(); //自動調整窗口大小
fr.setVisible(true);
其他,fr.setBackGround(Color.blue); 設置背景顏色
常用圖形組件
按鈕 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);
復選框 Checkbox
Checkbox c=new Checkbox(“test”,true); 第二個參數表示默認選中,否則為false
單選項 Radio
CheckboxGroup g=new CheckboxGroup();
Checkbox c=new Checkbox(“test”,g,true); //添加了一個組分類g
下拉列表框
Choice c=new Choice();
c.addItem(“test”);
列表框
跟下拉列表框類似,只是可以一次顯示多行,自動生成滾動條。
List t=new List(4,true); 4表示行數,true表示支持多選。
t.add(“test”); //添加超過四個時,自動生成滾動條。
對話框
對話框和Frame都是窗口類型,對話框和Frame相關聯,但不是放在Frame中。
Frame f=new Frame(“MyFrame”);
Dialog d=new Dialog(f, “Test” ,true);
第一個參數為與之相關聯的Frame,第三個參數表示對話框處理完畢才可以和Frame交互。就像Word軟件,選擇“文件/打開”之后出現的對話框。
文件對話框
文件對話框顯示一個對話框讓用戶選擇文件,該對話框用于點擊打開文件時調用。語法結構為:
FileDialog d=new FileDialog(f, “Test”);
用戶選擇了哪個文件可由對話框方法getDirectory()和getFile()獲得。返回為字符串。
如:String s=d.getDirectory()+d.getFile();
標簽
Label l=new Label(“test”);
滾動面板
對于較大的圖形界面,可以放在滾動面板中,然后將滾動面板放在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中設置菜單欄-》菜單欄中添加菜單-》菜單中添加菜單項。
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();
菜單選中:如自動換行。使用CheckBoxMenuItem.
快捷菜單(常用于右鍵單擊)
對于不需要放在固定位置的快捷菜單,可以使用PopupMenu來實現,和普通菜單Menu的使用方法一樣,可以添加各種菜單項、選擇項、分隔符等。使用show()方法可以指定快捷菜單的顯示位置。通常讀取鼠標右擊的位置來確定快捷菜單在何處顯示。
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); 第一個參數是各種組件,后面兩個參數是快捷菜單相對于第一個組件的相對顯示位置。
布局
流布局
流布局從左到右,自上而下的順序放置組件。其使用方式是:
其語法結構為:
FlowLayout t=new FlowLayout();
或FlowLayout t=new FlowLayout(FlowLayout.RIGHT);
或FlowLayout t=new FlowLayout(FlowLayout.LEFT,10,20);
后邊兩個參數表示組件左右、上下間隔多少像素。
使用:f.setLayout(t); 或者f.setLayout(new FlowLayout());
邊界布局
?
網格布局
?
卡片布局
?
網格包布局
?
繪圖操作
Java中使用Graphics對象可以進行各種繪圖操作。定義Panel的子類,重寫paint()方法。在該方法的參數中只有一個Graphics對象。窗口刷新時自動執行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); //設置字體
? g.drawString(“hello”,10,50); //寫hello
? g.drawOval(50,50,30,30); ?//畫橢圓
? g.fillRect(100,100,20,30); ?//畫有填充的長方形
}
}
事件處理
用戶單擊按鈕,自動產生的對象為ActionEvent,自動執行ActionPerformed()方法;按動鍵盤,自動產生的對象為KeyEvent,自動執行KeyPressed(),KeyReleased(),KeyTyped()方法。
按鈕事件處理
對于鼠標單擊按鈕的事件,編寫事件處理器時需要實現的接口為:ActionListener,該接口中只有一個方法需要實現:ActionPerformed(ActionEvent e)。程序可以如下:
import java.awt.event.*;
class xx implements ActionListener{
public void actionPerformed(ActionEvent e){
? System.out.println(e.getActionCommand()); //可以獲得用戶單擊的按鈕所對應的字符串。
}
}
按鈕添加監聽: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){
?………………..
}
}
鼠標事件的處理
實現的接口有兩類:一類是MouseListener,它處理鼠標單擊以及鼠標進出操作;另一類是MouseMotionListener,它處理鼠標拖動和移動操作。使用時可以實現其中的一個接口,也可以兩個都實現。
對于MouseMotionListener,拖動鼠標將執行mouseDragged(),移動鼠標將執行mouseMoved()。
對于MouseListener,鼠標按鈕按下將執行mousePressed(),鼠標按鈕釋放將執行mouseReleased(),鼠標按鈕單擊將執行mouseClicked(),鼠標進入組件所在區域將執行mouseEntered(),鼠標離開組件將執行mouseExited()。
方法的參數為MouseEvent,通過其getX()和getY()方法可以獲得鼠標的位置,getClickCount()方法可獲得單擊次數,通過paramString()方法可以獲得各種參數,包括單擊的模式,由此可判斷鼠標操作使用的是左按鈕還是右按鈕或中間按鈕。
import java.awt.*;
import java.awt.event.*;
public class xx implemets MouseListener,MouseMotionListener{
?對某一組件添加監聽。
?public void mouseMoved(MouseEvent ev){
? int x=ev.getX();
? int y=ev.getY();
? System.out.println(“mouseMoved”+x+y);
}
………………………….其它方法類似
}
窗口事件處理
接口:WindowListener。
方法:打開執行windowOpened(),單擊窗口右上角關閉按鈕執行windowClosing(),單擊最小化按鈕執行windowIconified()和windowDeactivated(),鼠標單擊其他窗口也會執行windowDeactivated(),由最小化恢復會執行windowDeiconified()和windowActivated(),當前窗口為其他窗口時單擊該窗口,也會執行windowActivated(),窗口被關閉,則執行windowClosed().
方法參數:WindowEvent e
選項事件的處理
單選按鈕、復選框、下拉列表、列表框、菜單中每個選項或菜單項都可以使用選項事件進行處理。
接口:ItemListener,每當選擇某個選項,便會自動執行itemStateChanged()方法,該方法的參數為ItemEvent。其getItem()方法可以獲得選項對應的字符串,getStateChange()方法可以獲得選項是選中(值為ItemEvent.SELECTED)還是未選中(值為ItemEvent.DESELECTED)。
添加監聽:.addItemListener(this);
動作事件的處理(文本框)
ActionListener除了用于鼠標單擊按鈕外,單行文本框中的回車、列表框中雙擊選擇某個選項也可以用其處理。
import java.awt.*;
import java.awt.event.*;
class xx implements ActionListener{
?TextField t=new TextField(“you can enter here”,35);
?t.addActionListener(this); ?//即單行文本框可以自動監聽。
?……………
?public void actionPerformed(ActionPerformed e){
String s=t.getText();
System.out.println(s);
}
}
注意:對于多行文本框TextArea,不能自動監聽,可以添加按鈕來實現檢查和提交功能。
多個事件處理器
如果對一個組件添加多個事件處理器,則需要對每一個處理器創建一個類。
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類
事件處理器實現的接口中往往有多個方法要實現,而某個具體程序用到的可能只是其中的一個,但實現接口時根據接口的語法規則必須把所有方法都實現,因此程序中不使用的方法要寫空語句。
為了簡化程序,java中預定義了一些特殊的類,這些類應經實現了相應的接口,方法中已經寫上空語句,使用時只要將事件處理器作為子類(使用extends,而不是implements)即可。命名規則:只要將接口中的Listener改為Adapter即可。對于只有一個方法需要實現的接口,沒有Adapter。
public class xx extends WindowAdapter implements WindowListener{
}
通過鼠標雙擊直接運行java程序
DOS下可以用javac *.java來編譯java文件,使用java 類名 來執行程序。
制作jar文件
雙擊直接運行java程序。
比如有MyFrame.java一文件。
javac MyFrame.java編譯生成MyFrame.class
然后做一個配置文件,隨意起一個文件名如conf.txt,該文件中輸入一行內容:
Main-Class: MyFrame
注意:文件開頭頂格,不可有空行空格,Main-Class:后有一空格。該配置文件給出了雙擊jar文件時運行其中的哪個類。
然后輸入如下命令制作jar文件:
jar cmf conf.txt MyFrame.jar *.class
這樣將創建MyFrame.jar,以后只要雙擊即可執行。
使用批處理制作
運行jar文件
java –jar MyFrame.jar
java中各種圖形組件如按鈕對話框都是Component類的子類,放在容器(Container)中。java中的容器有兩類:窗口Window和面板Panel。窗口是可以獨立存在的容器,Panel必須放在其他容器中,如窗口或瀏覽器窗口中。
窗口有兩類,一類是具有標題欄、最大化、最小化、按鈕的Frame,另一類是對話框Dialog。
使用Frame的主要步驟是:
import java.awt.*;
Frame fr=new Frame(“MyTest”);
fr.setSize(500,500);
fr.pack(); //自動調整窗口大小
fr.setVisible(true);
其他,fr.setBackGround(Color.blue); 設置背景顏色
常用圖形組件
按鈕 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);
復選框 Checkbox
Checkbox c=new Checkbox(“test”,true); 第二個參數表示默認選中,否則為false
單選項 Radio
CheckboxGroup g=new CheckboxGroup();
Checkbox c=new Checkbox(“test”,g,true); //添加了一個組分類g
下拉列表框
Choice c=new Choice();
c.addItem(“test”);
列表框
跟下拉列表框類似,只是可以一次顯示多行,自動生成滾動條。
List t=new List(4,true); 4表示行數,true表示支持多選。
t.add(“test”); //添加超過四個時,自動生成滾動條。
對話框
對話框和Frame都是窗口類型,對話框和Frame相關聯,但不是放在Frame中。
Frame f=new Frame(“MyFrame”);
Dialog d=new Dialog(f, “Test” ,true);
第一個參數為與之相關聯的Frame,第三個參數表示對話框處理完畢才可以和Frame交互。就像Word軟件,選擇“文件/打開”之后出現的對話框。
文件對話框
文件對話框顯示一個對話框讓用戶選擇文件,該對話框用于點擊打開文件時調用。語法結構為:
FileDialog d=new FileDialog(f, “Test”);
用戶選擇了哪個文件可由對話框方法getDirectory()和getFile()獲得。返回為字符串。
如:String s=d.getDirectory()+d.getFile();
標簽
Label l=new Label(“test”);
滾動面板
對于較大的圖形界面,可以放在滾動面板中,然后將滾動面板放在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中設置菜單欄-》菜單欄中添加菜單-》菜單中添加菜單項。
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();
菜單選中:如自動換行。使用CheckBoxMenuItem.
快捷菜單(常用于右鍵單擊)
對于不需要放在固定位置的快捷菜單,可以使用PopupMenu來實現,和普通菜單Menu的使用方法一樣,可以添加各種菜單項、選擇項、分隔符等。使用show()方法可以指定快捷菜單的顯示位置。通常讀取鼠標右擊的位置來確定快捷菜單在何處顯示。
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); 第一個參數是各種組件,后面兩個參數是快捷菜單相對于第一個組件的相對顯示位置。
布局
流布局
流布局從左到右,自上而下的順序放置組件。其使用方式是:
其語法結構為:
FlowLayout t=new FlowLayout();
或FlowLayout t=new FlowLayout(FlowLayout.RIGHT);
或FlowLayout t=new FlowLayout(FlowLayout.LEFT,10,20);
后邊兩個參數表示組件左右、上下間隔多少像素。
使用:f.setLayout(t); 或者f.setLayout(new FlowLayout());
邊界布局
?
網格布局
?
卡片布局
?
網格包布局
?
繪圖操作
Java中使用Graphics對象可以進行各種繪圖操作。定義Panel的子類,重寫paint()方法。在該方法的參數中只有一個Graphics對象。窗口刷新時自動執行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); //設置字體
? g.drawString(“hello”,10,50); //寫hello
? g.drawOval(50,50,30,30); ?//畫橢圓
? g.fillRect(100,100,20,30); ?//畫有填充的長方形
}
}
事件處理
用戶單擊按鈕,自動產生的對象為ActionEvent,自動執行ActionPerformed()方法;按動鍵盤,自動產生的對象為KeyEvent,自動執行KeyPressed(),KeyReleased(),KeyTyped()方法。
按鈕事件處理
對于鼠標單擊按鈕的事件,編寫事件處理器時需要實現的接口為:ActionListener,該接口中只有一個方法需要實現:ActionPerformed(ActionEvent e)。程序可以如下:
import java.awt.event.*;
class xx implements ActionListener{
public void actionPerformed(ActionEvent e){
? System.out.println(e.getActionCommand()); //可以獲得用戶單擊的按鈕所對應的字符串。
}
}
按鈕添加監聽: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){
?………………..
}
}
鼠標事件的處理
實現的接口有兩類:一類是MouseListener,它處理鼠標單擊以及鼠標進出操作;另一類是MouseMotionListener,它處理鼠標拖動和移動操作。使用時可以實現其中的一個接口,也可以兩個都實現。
對于MouseMotionListener,拖動鼠標將執行mouseDragged(),移動鼠標將執行mouseMoved()。
對于MouseListener,鼠標按鈕按下將執行mousePressed(),鼠標按鈕釋放將執行mouseReleased(),鼠標按鈕單擊將執行mouseClicked(),鼠標進入組件所在區域將執行mouseEntered(),鼠標離開組件將執行mouseExited()。
方法的參數為MouseEvent,通過其getX()和getY()方法可以獲得鼠標的位置,getClickCount()方法可獲得單擊次數,通過paramString()方法可以獲得各種參數,包括單擊的模式,由此可判斷鼠標操作使用的是左按鈕還是右按鈕或中間按鈕。
import java.awt.*;
import java.awt.event.*;
public class xx implemets MouseListener,MouseMotionListener{
?對某一組件添加監聽。
?public void mouseMoved(MouseEvent ev){
? int x=ev.getX();
? int y=ev.getY();
? System.out.println(“mouseMoved”+x+y);
}
………………………….其它方法類似
}
窗口事件處理
接口:WindowListener。
方法:打開執行windowOpened(),單擊窗口右上角關閉按鈕執行windowClosing(),單擊最小化按鈕執行windowIconified()和windowDeactivated(),鼠標單擊其他窗口也會執行windowDeactivated(),由最小化恢復會執行windowDeiconified()和windowActivated(),當前窗口為其他窗口時單擊該窗口,也會執行windowActivated(),窗口被關閉,則執行windowClosed().
方法參數:WindowEvent e
選項事件的處理
單選按鈕、復選框、下拉列表、列表框、菜單中每個選項或菜單項都可以使用選項事件進行處理。
接口:ItemListener,每當選擇某個選項,便會自動執行itemStateChanged()方法,該方法的參數為ItemEvent。其getItem()方法可以獲得選項對應的字符串,getStateChange()方法可以獲得選項是選中(值為ItemEvent.SELECTED)還是未選中(值為ItemEvent.DESELECTED)。
添加監聽:.addItemListener(this);
動作事件的處理(文本框)
ActionListener除了用于鼠標單擊按鈕外,單行文本框中的回車、列表框中雙擊選擇某個選項也可以用其處理。
import java.awt.*;
import java.awt.event.*;
class xx implements ActionListener{
?TextField t=new TextField(“you can enter here”,35);
?t.addActionListener(this); ?//即單行文本框可以自動監聽。
?……………
?public void actionPerformed(ActionPerformed e){
String s=t.getText();
System.out.println(s);
}
}
注意:對于多行文本框TextArea,不能自動監聽,可以添加按鈕來實現檢查和提交功能。
多個事件處理器
如果對一個組件添加多個事件處理器,則需要對每一個處理器創建一個類。
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類
事件處理器實現的接口中往往有多個方法要實現,而某個具體程序用到的可能只是其中的一個,但實現接口時根據接口的語法規則必須把所有方法都實現,因此程序中不使用的方法要寫空語句。
為了簡化程序,java中預定義了一些特殊的類,這些類應經實現了相應的接口,方法中已經寫上空語句,使用時只要將事件處理器作為子類(使用extends,而不是implements)即可。命名規則:只要將接口中的Listener改為Adapter即可。對于只有一個方法需要實現的接口,沒有Adapter。
public class xx extends WindowAdapter implements WindowListener{
}
通過鼠標雙擊直接運行java程序
DOS下可以用javac *.java來編譯java文件,使用java 類名 來執行程序。
制作jar文件
雙擊直接運行java程序。
比如有MyFrame.java一文件。
javac MyFrame.java編譯生成MyFrame.class
然后做一個配置文件,隨意起一個文件名如conf.txt,該文件中輸入一行內容:
Main-Class: MyFrame
注意:文件開頭頂格,不可有空行空格,Main-Class:后有一空格。該配置文件給出了雙擊jar文件時運行其中的哪個類。
然后輸入如下命令制作jar文件:
jar cmf conf.txt MyFrame.jar *.class
這樣將創建MyFrame.jar,以后只要雙擊即可執行。
使用批處理制作
運行jar文件
java –jar MyFrame.jar
總結
以上是生活随笔為你收集整理的java图形界面应用程序(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求解最长单调递增子串
- 下一篇: 将不确定变为确定~整形变量是否可以进行位