JAVA學(xué)習(xí)第五十八課 ― GUI
來源:程序員人生 發(fā)布時間:2014-11-13 09:00:45 閱讀次數(shù):2112次
GUI
Graghical User Interface(圖形用戶接口)
java為GUI提供的對象都存在java.awt和java.swing包中
Java的GUI做的的確干不過C++等,不打算浪費過量的時間在這上面
1個簡單的窗體演示
public static void main(String[] args){
Frame f = new Frame("新窗體");
f.setLocation(400, 200);//設(shè)置窗體的位置
f.setSize(500, 400);//設(shè)置窗口大小
//f.setBounds(400, 200, 500, 400);功能相當(dāng)于上面兩句
f.setLayout(new FlowLayout());//設(shè)置 流式 布局
Button bt = new Button("1個按鈕");
f.add(bt);
f.setVisible(true);//顯示窗口
}
顯示出窗體后發(fā)現(xiàn)沒法關(guān)閉窗體,就用到了
事件監(jiān)聽機制
其組成:事件源(組件)、事件(Event)、監(jiān)聽器(Listener)、事件處理(引發(fā)事件后處理方式)
public static void main(String[] args){
Frame f = new Frame("新窗體");
f.setLocation(400, 200);//設(shè)置窗體的位置
f.setSize(500, 400);//設(shè)置窗口大小
//f.setBounds(400, 200, 500, 400);功能相當(dāng)于上面兩句
f.setLayout(new FlowLayout());//設(shè)置 流式 布局
Button bt = new Button("1個按鈕");
f.add(bt);
//由于關(guān)不掉這1事件, 要注冊1個監(jiān)聽器
//窗體適配器類WindowAdapter,已覆蓋了所有方法,便捷于創(chuàng)建監(jiān)聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//添加窗體監(jiān)聽
f.setVisible(true);//顯示窗口
}
用戶對組件操作,就是1個事件,那末產(chǎn)生事件的組件就是事件源。
ActionListener演示:
public static void main(String[] args){
Frame f = new Frame("新窗體");
f.setLocation(400, 200);//設(shè)置窗體的位置
f.setSize(500, 400);//設(shè)置窗口大小
//f.setBounds(400, 200, 500, 400);功能相當(dāng)于上面兩句
f.setLayout(new FlowLayout());//設(shè)置 流式 布局
Button bt = new Button("1個按鈕");
f.add(bt);
//由于關(guān)不掉這1事件, 要注冊1個監(jiān)聽器
//窗體適配器類WindowAdapter,已覆蓋了所有方法,便捷于創(chuàng)建監(jiān)聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});//添加窗體監(jiān)聽
//在按鈕上添加1個監(jiān)聽事件:點擊1下退出
bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//System.out.println("按了");
System.exit(0);
}
});
f.setVisible(true);//顯示窗口
}
鍵盤和鼠標監(jiān)聽事件
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("鼠標和鍵盤監(jiān)聽");
bt = new Button("按鈕");
f.setBounds(400, 200, 500, 400);
f.setLayout(new FlowLayout());
tf = new TextField(40);//指定列數(shù)
f.add(tf);
f.add(bt);
myEvent();
f.setVisible(true);
}
private void myEvent(){
//給文本框添加鍵盤監(jiān)聽
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("必須數(shù)字");
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.....");
}
}
});
//在窗體上添加退出監(jiān)聽器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//在按鈕上添加鼠標監(jiān)聽器
bt.addMouseListener(new MouseAdapter() {
private int count = 1;//計數(shù)器
public void mouseEntered(MouseEvent e) {//鼠標碰到即觸發(fā)
tf.setText("mouse enter : "+count++);//信息添加到文本框
}
public void mouseClicked(MouseEvent e) {//點擊
if(e.getClickCount()==2){//得到點擊次數(shù),雙擊
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();
}
}
關(guān)于Swing包中的,需要在Ecplice安裝插件。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈