java - Java GUI 当我按下 JButton 时如何进行事件?
问题描述
我想做一个键盘。如果我按下按钮,它必须出现在 2.(图片)。我认为这是制作计算器的类似方法。我可以给点建议吗?
其实我什至不知道这是否正确。我可以制作这样的 JButton 吗?
这是我的代码。
package assignment;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Random extends JFrame {
Random() {
setTitle("보안 키보드");
setLayout(new BorderLayout(10, 10));
showNorth();
showCenter();
showSouth();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(450,500);// 창크기를 정한다
setVisible(true);}
void showNorth() {
JTextField area1 = new JTextField();
JTextField area2 = new JTextField();
JPanel panel = new JPanel(new GridLayout(2, 0));
}
area2.setText("보안문자를 입력하세요.");
area1.setHorizontalAlignment(JTextField.CENTER);
area2.setHorizontalAlignment(JTextField.CENTER);
area1.setEditable(false);
area2.setEditable(false);
panel.add(area1);
panel.add(area2);
add(panel, BorderLayout.NORTH);
}
void showCenter() {
JPanel p3 = new JPanel(new GridLayout(4, 4));
p3.setLayout(new GridLayout(5, 5, 5, 5));
// 버튼 생성하기
JButton ba = new JButton("");
JButton bb = new JButton("");
JButton bc = new JButton("");
JButton bd = new JButton("");
JButton b0 = new JButton("0");
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
JButton b5 = new JButton("5");
JButton b6 = new JButton("6");
JButton b7 = new JButton("7");
JButton b8 = new JButton("8");
JButton b9 = new JButton("9");
JButton er1 = new JButton("하나\n지움");
JButton erall = new JButton("전체\n지움");
p3.add(ba);// 버튼을 패널에 부착시킨다
p3.add(bb);
p3.add(bc);
p3.add(bd);
p3.add(b0);
p3.add(b1);
p3.add(b2);
p3.add(b3);
p3.add(b4);
p3.add(b5);
p3.add(b6);
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(er1);
p3.add(erall);
add(p3, BorderLayout.CENTER); // 패널을 프레임의 중앙에 추가한다.
}
void showSouth() {
JPanel p4 = new JPanel();
JButton complete = new JButton("입력완료"); // 입력완료 버튼 생성
p4.add(complete);
p4.setLayout((LayoutManager) new FlowLayout(FlowLayout.TRAILING));
add(p4, BorderLayout.SOUTH);
}
public static void main(String[] args) {
new Random();
}
}
解决方案
首先,代码需要极端的重构。但是作为 OOP 初学者,让我们深入研究您的问题。您的名为 Random 的类需要实现 ActionListener 接口并覆盖 actionPerformed 方法:
@Override
public void actionPerformed(ActionEvent e) {
}
然后,您要做的是添加动作侦听器并为按钮设置动作命令,例如:
button.addActionListener(this);
button.addActionCommand("button")
现在您可以知道单击了哪个按钮并在您的 JTextField 上表示某些内容:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("button")){
textField.setText("button was clicked");
}
}
推荐阅读
- javascript - 简单的短语检测,按短语正则表达式拆分
- amazon-ec2 - 终止原因:Client.InternalError:启动时出现客户端错误
- javascript - 使用 forEach 从对象中提取值
- reactjs - Axios 向 React 发送奇怪的数组
- c# - Microsoft Interop Excel,列出 C# Vsto 中所有可用的字体样式
- php - PHP:内爆并获取多维关联数组的键
- excel - 根据单元格值创建文件夹
- xcode - 是否可以在没有“Apple 开发者帐户”且没有 Apple 设备的情况下为 iOS 生成 .ipa 文件?
- svelte - 如何在没有“if”的情况下切换 Svelte 组件的底层标记?
- localization - Microsoft Teams 应用本地化不再起作用