1. 程式人生 > >Java監聽器的用法(一):內部類監聽器

Java監聽器的用法(一):內部類監聽器

當在處理按鈕等監聽事件時,需要註冊監聽器,監聽器的位置不同,角色就不同,訪問的區域就不同。
內部類是在另一個類中宣告的,包含內部類的類叫做外嵌類
內部類和外嵌類的關係:
1.內部類的外嵌類的成員變數在內部類中仍有效,內部類的方法也可以呼叫外嵌類的方法。即內部類可以訪問外部類的變數和方法。
2.在內部類的類體中不可以申明類變數和類方法,外嵌類的類體重可以用內部類宣告物件作為外嵌類的成員。
三個按鈕控制面板的三種顏色

import java.awt.*;
import javax.swing.*;
public class ButtonTest
{
   public static void
main(String[] args) { JFrame frame = new ButtonFrame(); frame.setTitle("ButtonTest"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonFrame
extends JFrame {
private JPanel buttonPanel; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 300; public ButtonFrame() { setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // 建立按鈕物件 JButton yellowButton = new JButton("Yellow"); JButton blueButton = new
JButton("Blue"); JButton redButton = new JButton("Red"); buttonPanel = new JPanel(); // 新增按鈕到畫板 buttonPanel.add(yellowButton); buttonPanel.add(blueButton); buttonPanel.add(redButton); add(buttonPanel); // 建立按鈕監聽器 ColorListener yellowListener = new ColorListener(Color.YELLOW); ColorListener blueListener = new ColorListener(Color.BLUE); ColorListener redListener = new ColorListener(Color.RED); // 為每個按鈕設定監聽器 yellowButton.addActionListener(yellowListener); blueButton.addActionListener(blueListener); redButton.addActionListener(redListener); } //內部類監聽器 private class ColorListener implements ActionListener { private Color backgroundColor; public ColorListener(Color c) { backgroundColor = c; } public void actionPerformed(ActionEvent event) { buttonPanel.setBackground(backgroundColor);//內部類可以訪問外部類的變數 } } }

這裡寫圖片描述