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("请重新点击");
}
}
}