首页 > 解决方案 > 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();
    }

}

标签: javaswingjframejbuttoncalculator

解决方案


首先,代码需要极端的重构。但是作为 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");
    }
}

推荐阅读