JFrame BorderLayout东西南北中事件监听输出文本域

JFrame 东西南北中事件监听输出文本域

题目

点击某个按钮,在文本框中显示对应的文字。

在这里插入图片描述

解题

效果图

在这里插入图片描述

源代码

主类
public class JFDTest {
    public static void main(String args[]) {

        MyJFrame myJFrame = new MyJFrame("我...", 100, 100, 200, 200);

// 创建上半部分panel1玻璃窗,存放文本域
        Panel panel1 = new Panel(new FlowLayout());
        JTextArea textArea = new JTextArea(1, 10);
        panel1.add(new JScrollPane(textArea));

// 创建上半部分panel1玻璃窗,存放五个按钮
        Panel panel2 = new Panel(new BorderLayout());
//分别独立创建 东西南北中 五个按钮,以便后续监听使用
        JButton button_north = new JButton("北");
        panel2.add(button_north, BorderLayout.NORTH);
        JButton button_south = new JButton("南");
        panel2.add(button_south, BorderLayout.SOUTH);
        JButton button_east = new JButton("东");
        panel2.add(button_east, BorderLayout.EAST);
        JButton button_west = new JButton("西");
        panel2.add(button_west, BorderLayout.WEST);
        JButton button_center = new JButton("中");
        panel2.add(button_center, BorderLayout.CENTER);

        JButtonHandler listener = new JButtonHandler();
//创建监听事件,listener实例,以及连接文本域
        listener.setJTextArea(textArea);
//监听各按钮
        button_north.addActionListener(listener);
        button_south.addActionListener(listener);
        button_east.addActionListener(listener);
        button_west.addActionListener(listener);
        button_center.addActionListener(listener);
        
        //将两个玻璃窗放入容器窗格,构造完成
        myJFrame.add(panel1);
        myJFrame.add(panel2);
        myJFrame.setVisible(true);
    }
}
MyJFrame框架类
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

class MyJFrame extends JFrame {
    MyJFrame(String s, int x, int y, int w, int h) {
        setLayout(new FlowLayout());
        setTitle(s);
        setBounds(x, y, w, h);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}
JButtonHandler事件监听类
class JButtonHandler implements ActionListener {
    JTextArea textshow;

    public void setJTextArea(JTextArea area) {
        textshow = area;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
//e.getActionCommand()得到button按钮上的字符串
		textshow.setText("");
        switch (e.getActionCommand()) {
            case "北":
                textshow.append("北");
                break;
            case "南":
                textshow.append("南");
                break;
            case "东":
                textshow.append("东");
                break;
            case "西":
                textshow.append("西");
                break;
            case "中":
                textshow.append("中");
                break;
            default:
                textshow.append("请重新点击");
        }
    }
}
posted @ 2021-07-10 08:38  SKPrimin  阅读(47)  评论(0编辑  收藏  举报