馬士兵 J2SE 第11章 GUI編程 事件模型ACTIONEVENT TEXTFIELD事件監聽 內部類 PAINT adapter和repaint window事件 鍵盤事件
BUTTON事件監聽
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TestActionEvent { public static void main(String[] args) { Frame f=new Frame("Test"); Button b=new Button("Press Me!"); Monitor bh=new Monitor(); b.addActionListener(bh); f.add(b,BorderLayout.CENTER); f.pack(); f.setVisible(true); } } class Monitor implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("a button has been pressed"); } }
/* 範例名稱:Java事件處理舉例 * 源文件名稱:TestActionEvent2.java * 要 點: * 1. 一個事件源組件上可以同時注冊多個監聽器 * 2. 一個監聽器對象可以同時注冊到多個事件源組件上 * 3. 事件源的信息可以隨它所觸發的事件自動傳遞到所有注冊過的監聽器 */ package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TestActionEvent2 { public static void main(String[] args) { Frame f=new Frame("test"); Button b1=new Button("Start"); Button b2=new Button("Stop"); Monitor2 bh=new Monitor2(); b1.addActionListener(bh); b2.addActionListener(bh); b2.setActionCommand("gameover"); f.add(b1,"North"); f.add(b2,"Center"); f.pack(); f.setVisible(true); } } class Monitor2 implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("a button has been pressed,"+ "the relative info is:\n"+e.getActionCommand()); } }
TEXTFIELD事件監聽
輸入TEXT中的字符都可以在命令行中顯示出來
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TFActionEvent { public static void main(String[] args) { new TFFrame(); } } class TFFrame extends Frame { TFFrame() { TextField tf=new TextField(); add(tf); tf.addActionListener(new TFActionListener()); pack(); setVisible(true); } } class TFActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { TextField tf=(TextField)e.getSource(); System.out.println(tf.getText()); tf.setText(""); } }
增加密碼內容在輸入框中顯示*
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TFPassword { public static void main(String[] args) { new TFFrame2(); } } class TFFrame2 extends Frame { TFFrame2() { TextField tf=new TextField(); add(tf); tf.addActionListener(new TFActionListener()); //注意這個!回顯字符 tf.setEchoChar('*'); pack(); setVisible(true); } } class TFPasswordListener2 implements ActionListener { public void actionPerformed(ActionEvent e) { TextField tf=(TextField)e.getSource(); System.out.println(tf.getText()); tf.setText(""); } }
TEXTFIELD加法計算器 程序
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TFMath { public static void main(String[] args) { new TFFrame3().launchFrame(); } } class TFFrame3 extends Frame { TextField num1,num2,num3; public void launchFrame() { num1=new TextField(10); num2=new TextField(10); num3=new TextField(15); Label lblPlus=new Label("+"); Button btnEqual=new Button("="); btnEqual.addActionListener(new MyMonitor()); setLayout(new FlowLayout()); add(num1); add(lblPlus); add(num2); add(btnEqual); add(num3); pack(); setVisible(true); } private class MyMonitor implements ActionListener { public void actionPerformed(ActionEvent e) { int n1=Integer.parseInt(num1.getText()); int n2=Integer.parseInt(num2.getText()); num3.setText(""+(n1+n2)); } } }
PAINT的使用
package com.zzk.cn; import java.awt.*; public class TestPaint { public static void main(String[] args) { new PaintFrame().launchFrame(); } } class PaintFrame extends Frame { public void launchFrame() { setBounds(200,200,640,460); setVisible(true); } public void paint(Graphics g) { Color c=g.getColor(); g.setColor(Color.red); g.fillOval(50, 50, 30, 30);//填充橢圓 g.setColor(Color.green); g.fillRect(80, 80, 40, 40);//填充矩形 g.setColor(c); } }
畫點程序
package com.zzk.cn; import java.awt.*; import java.awt.event.*; import java.util.*; public class MyMouseAdapter { public static void main(String[] args) { new MyFrame5("drawing..."); } } class MyFrame5 extends Frame { ArrayList points=null; MyFrame5(String s) { super(s); points=new ArrayList();//將點放在數組中 setLayout(null);//取消默認布局 setBounds(300,300,400,300); this.setBackground(new Color(204,204,255)); setVisible(true); this.addMouseListener(new Monitor3()); } public void paint(Graphics g) { Iterator i=points.iterator(); while(i.hasNext()) { Point p=(Point)i.next(); g.setColor(Color.blue); g.fillOval(p.x, p.y, 10, 10); } } public void addPoint(Point p) { points.add(p); } } class Monitor3 extends MouseAdapter { public void mousePressed(MouseEvent e) { MyFrame5 f=(MyFrame5)e.getSource(); f.addPoint(new Point(e.getX(),e.getY())); f.repaint(); } }
關掉窗口
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TestWindowClose { public static void main(String args[]) { new MyFrame55("MyFrame"); } } class MyFrame55 extends Frame { MyFrame55(String s) { super(s); setLayout(null); setBounds(300,300,400,300); this.setBackground(new Color(204,204,255)); setVisible(true); this.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false); System.exit(-1); } } ); } }
第二種寫法:
內部類寫法
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TestWindowClose { public static void main(String args[]) { new MyFrame55("MyFrame"); } } class MyFrame55 extends Frame { MyFrame55(String s) { super(s); setLayout(null); setBounds(300,300,400,300); this.setBackground(new Color(204,204,255)); setVisible(true); this.addWindowListener(new MyWindowMonitor()); // this.addWindowListener( // new WindowAdapter() { // public void windowClosing(WindowEvent e) { // setVisible(false); // System.exit(-1); // } // } // ); } class MyWindowMonitor extends WindowAdapter { public void windowClosing(WindowEvent e) { setVisible(false); System.exit(0); } } }
package com.zzk.cn; /* 範例名稱:匿名類在事件處理中的使用 * 源文件名稱:TestAnonymous2.java * 要 點: * 1. 匿名類隻能是內部類 * 2. 匿名類的兩種創建方式----既可以繼承父類、也可以單重實現接口 */ import java.awt.*; import java.awt.event.*; public class TestAnonymous2 { Frame f=new Frame("Test"); TextField tf=new TextField(10); Button b1=new Button("Start"); public TestAnonymous2() { f.add(b1,"North"); f.add(tf,"South"); b1.addActionListener(new ActionListener() { private int i; public void actionPerformed(ActionEvent e) { tf.setText(e.getActionCommand()+ ++i); } } ); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.pack(); f.setVisible(true); } public static void main(String args[]) { new TestAnonymous2(); } }
鍵盤上下左右事件
package com.zzk.cn; import java.awt.*; import java.awt.event.*; public class TestKey { public static void main(String[] args) { new KeyFrame().launchFrame(); } } class KeyFrame extends Frame { public void launchFrame() { setSize(200,200); setLocation(300,300); addKeyListener(new MyKeyMonitor()); setVisible(true); } class MyKeyMonitor extends KeyAdapter { public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); if(keyCode == KeyEvent.VK_UP) { System.out.println("UP"); } if(keyCode == KeyEvent.VK_DOWN) { System.out.println("DOWN"); } if(keyCode == KeyEvent.VK_LEFT) { System.out.println("LEFT"); } if(keyCode == KeyEvent.VK_RIGHT) { System.out.println("RIGHT"); } } } }
最後更新:2017-04-02 06:52:19
上一篇:
JAVASCRIPT權威指南第五版 第一章 JAVASCRIPT概述
下一篇:
搜索關鍵字飛入飛出效果
綠盟科技網絡安全威脅周報2017.33 關注Foxit PDF Compressor installer DLL預加載漏洞CVE-2017-12892
resin配置jndi數據源-sql server2008
中小型商業銀行的軟件安全測試之道
Oracle Greatest()函數
jstring 和char* 之間的轉換方法
Emacs + Clojure配置的幾個Tip
VxWorks啟動流程
ALICloudDB for PostgreSQL 試用報告 - 3 水平分庫 vs 單機 性能
Android imageView圖片按比例縮放
使用C#開發基於Winform的手機號碼歸屬地查詢工具