CH03 為自己的視窗加上小元件 物件導向系統實務
選擇前兩次介紹的各種建窗方式,建立一個視窗 2019/1/15 選擇前兩次介紹的各種建窗方式,建立一個視窗
事件與傾聽者間的關係 屬java.awt.event.* 的mouseListener介面,介面中定義了mouseClick, mousePress…等方法 [按鈕1]委任一個 MouseListener 物件,以接收並回 應mouseClick 事件源 事件:敲擊滑鼠按鍵 (mouseClick) 屬java.awt.*的Button內的方法 addMouseListener(…) 按鈕1 接收及回應 mouseClick MouseListener物件 委任一個 2019/1/15
2019/1/15 加入一個標籤元件
標籤JLABEL JLabel元件繼承自JComponent類別,可以顯示一段文字 內容或圖示 2019/1/15 JLabel元件繼承自JComponent類別,可以顯示一段文字 內容或圖示 JLabel label1 = new JLabel(“CLOSE”); JLabel label1 = new Jlabel(new ImageIcon(“red.gif”); javax.swing class JLabel static final int CENTER LEFT TOP BOTTOM RIGHT NORTH EAST SOUTH WEST JLabel() JLabel(Icon image) JLabel(String text) JLabel(String text, Icon image) String getText() void setText()
範例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); 2019/1/15
2019/1/15 加入一個按鈕元件
按鈕元件JBUTTON 可以使用滑鼠按一下的按鈕元件,要完成可接收到按 鈕指令,需要三步驟: JButton類別: 2019/1/15 可以使用滑鼠按一下的按鈕元件,要完成可接收到按 鈕指令,需要三步驟: 建立JButton元件外觀 接上事件傾聽者 處理事件(寫程式,當發生按按鈕時,要做什麼) JButton類別: java.awt interface ActionListener void actionPerformed(ActionEvent e) javax.swing class JButton JButton() JButton(String text) JButton(ImageIcon image) JButton(String text, ImageIcon image) String getText() void setText(String text) char getMnemonic() setMnemoic(int key) addActionListener(ActionListener ac)
範例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("你按到按鈕了"); 2019/1/15
討論: 2019/1/15 範例2的執行結果怪怪的? 我們需要為視窗作一個版面配置
版面配置LAYOUT MANAGER 版面配置管理員(Layout Manager)可以編排新增的 元件 2019/1/15 版面配置管理員(Layout Manager)可以編排新增的 元件 不同的版面配置管理員,擁有不同預設的編排方式, 只需依照需求選擇使用的版面配置管理員,就可以編 排出漂亮的GUI介面 FlowLayout版面配置 java.awt class FlowLayout static final int LEFT RIGHT CENTER FlowLayout() FlowLayout(int align) FlowLayout(int align, int hgap,int vgap)
範例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("你按到按鈕了"); 2019/1/15
作業 2019/1/15 修改範例3,使得每按一次按鈕,標籤就會出現 “你按了?次按鈕”