130 likes | 310 Views
CH03 為自己的視窗加上小元件. 物件導向系統實務. 選擇前兩次介紹的各種建窗方式 , 建立一個視窗. 事件與傾聽者間的關係. 屬 java.awt.event.* 的 mouseListener 介面,介面中定義了 mouseClick, mousePress… 等方法. [ 按鈕1 ] 委任一個 MouseListener 物件,以接收並回 應 mouseClick 事件源. 事件 : 敲擊滑鼠按鍵 ( mouseClick). . 屬 java.awt.* 的 Button 內的方法. addMouseListener(…). 按鈕 1.
E N D
CH03 為自己的視窗加上小元件 物件導向系統實務
選擇前兩次介紹的各種建窗方式,建立一個視窗選擇前兩次介紹的各種建窗方式,建立一個視窗
事件與傾聽者間的關係 屬java.awt.event.* 的mouseListener介面,介面中定義了mouseClick, mousePress…等方法 [按鈕1]委任一個 MouseListener 物件,以接收並回 應mouseClick 事件源 事件:敲擊滑鼠按鍵 (mouseClick) 屬java.awt.*的Button內的方法 addMouseListener(…) 按鈕1 接收及回應 mouseClick MouseListener物件 委任一個
標籤JLABEL • JLabel元件繼承自JComponent類別,可以顯示一段文字內容或圖示 • JLabel label1 = new JLabel(“CLOSE”); • JLabel label1 = new Jlabel(new ImageIcon(“red.gif”);
範例1:加上一個標籤 • import javax.swing.*; • import java.awt.*; • import java.awt.event.*; • class Win6_1 • { public static void main(String [] args) • { MyJFrame6_1 f = new MyJFrame6_1(); • f.setSize(200,300); • f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); • f.setVisible(true); • } • } • class MyJFrame6_1 extends JFrame • { JLabel label1; • MyJFrame6_1() • { super("Win6_1"); • label1 = new JLabel("Hello JAVA World!!"); • add(label1); • } • }
按鈕元件JBUTTON • 可以使用滑鼠按一下的按鈕元件,要完成可接收到按鈕指令,需要三步驟: • 建立JButton元件外觀 • 接上事件傾聽者 • 處理事件(寫程式,當發生按按鈕時,要做什麼) • JButton類別:
範例2:將範例1的視窗加上一個按鈕 • import javax.swing.*; • import java.awt.*; • import java.awt.event.*; • class Win6_2 • { public static void main(String [] args) • { MyJFrame6_2 f = new MyJFrame6_2(); • f.setSize(200,300); • f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); • f.setVisible(true); • } • } • class MyJFrame6_2 extends Jframe implements ActionListener • { JLabel label1; • JButton button1; • MyJFrame6_2() • { super("Win6_2"); • label1 = new JLabel("Hello JAVA World!!"); • add(label1); • button1 = new JButton("按我"); • button1.addActionListener(this); • add(button1); • } • public void actionPerformed(ActionEvent e) • { label1.setText("你按到按鈕了"); • } • }
討論: • 範例2的執行結果怪怪的? 我們需要為視窗作一個版面配置
版面配置LAYOUT MANAGER • 版面配置管理員(Layout Manager)可以編排新增的元件 • 不同的版面配置管理員,擁有不同預設的編排方式,只需依照需求選擇使用的版面配置管理員,就可以編排出漂亮的GUI介面 • FlowLayout版面配置
範例3:為範例2的視窗加上FLOWLAYOUT • import javax.swing.*; • import java.awt.*; • import java.awt.event.*; • class Win6_3 • { public static void main(String [] args) • { MyJFrame6_3 f = new MyJFrame6_3(); • f.setSize(200,300); • f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); • f.setVisible(true); • } • } • class MyJFrame6_3 extends Jframe implements ActionListener • { JLabel label1; • JButton button1; • MyJFrame6_3() • { super("Win6_3"); • this.setLayout(new FlowLayout(FlowLayout.CENTER)); • label1 = new JLabel("Hello JAVA World!!"); • add(label1); • button1 = new JButton("按我"); • button1.addActionListener(this); • add(button1); • } • public void actionPerformed(ActionEvent e) • { label1.setText("你按到按鈕了"); • } • }
作業 • 修改範例3,使得每按一次按鈕,標籤就會出現 “你按了?次按鈕”