GUI
Graghical User Interface(圖形使用者介面)
java為GUI提供的物件都存在java.awt和java.swing包中
Java的GUI做的的確幹只是C++等。不打算浪費過多的時間在這上面
一個簡單的視窗演示
public static void main(String[] args){
Frame f = new Frame("新視窗");
f.setLocation(400, 200);//設定視窗的位置
f.setSize(500, 400);//設定視窗大小
//f.setBounds(400, 200, 500, 400);功能相當於上面兩句
f.setLayout(new FlowLayout());//設定 流式 佈局
Button bt = new Button("一個button");
f.add(bt);
f.setVisible(true);//顯示視窗
}
顯示出視窗後發現無法關閉視窗,就用到了事件監聽機制
其組成:事件源(元件)、事件(Event)、監聽器(Listener)、事件處理(引發事件後處理方式)
public static void main(String[] args){
Frame f = new Frame("新視窗");
f.setLocation(400, 200);//設定視窗的位置
f.setSize(500, 400);//設定視窗大小
//f.setBounds(400, 200, 500, 400);功能相當於上面兩句
f.setLayout(new FlowLayout());//設定 流式 佈局
Button bt = new Button("一個button");
f.add(bt);
//由於關不掉這一事件。 要註冊一個監聽器
//視窗介面卡類WindowAdapter,已經覆蓋了全部方法,便捷於建立監聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//加入視窗監聽
f.setVisible(true);//顯示視窗
}
使用者對元件操作。就是一個事件。那麼產生事件的元件就是事件源。
ActionListener演示:
public static void main(String[] args){
Frame f = new Frame("新視窗");
f.setLocation(400, 200);//設定視窗的位置
f.setSize(500, 400);//設定視窗大小
//f.setBounds(400, 200, 500, 400);功能相當於上面兩句
f.setLayout(new FlowLayout());//設定 流式 佈局
Button bt = new Button("一個button");
f.add(bt);
//由於關不掉這一事件, 要註冊一個監聽器
//視窗介面卡類WindowAdapter,已經覆蓋了全部方法,便捷於建立監聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//加入視窗監聽
//在button上加入一個監聽事件:點選一下退出
bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//System.out.println("按了");
System.exit(0);
}
});
f.setVisible(true);//顯示視窗
}
鍵盤和滑鼠監聽事件
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Main {
private Frame f;
private TextField tf;//文字框
private Button bt;
public Main(){
init();
}
private void init(){
f = new Frame("滑鼠和鍵盤監聽");
bt = new Button("button");
f.setBounds(400, 200, 500, 400);
f.setLayout(new FlowLayout());
tf = new TextField(40);//指定列數
f.add(tf);
f.add(bt);
myEvent();
f.setVisible(true);
}
private void myEvent(){
//給文字框加入鍵盤監聽
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {//按下
//System.out.println("key Pressed : "+e.getKeyChar()+" : "+e.getKeyCode()+" : "+e.getKeyText(e.getKeyCode()));//按下即列印
/* int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code <= KeyEvent.VK_9))//推斷
{
System.out.println("必須數字");
e.consume();//使用。不會依照預設的事件處理方式
}
if(e.getKeyCode()==KeyEvent.VK_ENTER){//按下回車
System.out.println("enter.....");
}
*/
if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){//按下Ctrl+回車
System.out.println("Crtl enter.....");
}
}
});
//在視窗上加入退出監聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//在button上加入滑鼠監聽器
bt.addMouseListener(new MouseAdapter() {
private int count = 1;//計數器
public void mouseEntered(MouseEvent e) {//滑鼠碰到即觸發
tf.setText("mouse enter : "+count++);//資訊加入到文字框
}
public void mouseClicked(MouseEvent e) {//點選
if(e.getClickCount()==2){//得到點選次數,雙擊
System.out.println("mouseClicked Double click");
}
/*else if(e.getClickCount()==1){
System.out.println("mouseClicked only click");
}*/
}
});
}
public static void main(String[] args){
new Main();
}
}
關於Swing包中的。須要在Ecplice安裝外掛。
版權宣告:本文博主原創文章。部落格,未經同意不得轉載。