You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java GUI:点击JButton10次后禁用按钮并实现数据存储提示

解决Java GUI输入10个数字并禁用按钮的问题

我帮你调整了代码,完美实现你想要的功能——收集10个输入的数字、完成后禁用按钮并弹出提示框。下面是修正后的完整代码,我会逐点说明关键改动:

import java.awt.EventQueue;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

public class Uygulama extends JFrame {
    private JPanel contentPane;
    private JTextField textField;
    // 用来存储输入的10个数字
    private List<Integer> numberList = new ArrayList<>();

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Uygulama frame = new Uygulama();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Uygulama() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 233, 140);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        textField = new JTextField();
        textField.setBounds(48, 13, 116, 22);
        contentPane.add(textField);
        textField.setColumns(10);

        JButton btnHesapla = new JButton("HESAPLA");
        btnHesapla.addActionListener(new ActionListener() {
            // 计数器初始化为0,记录已输入的次数
            int counter = 0;

            public void actionPerformed(ActionEvent arg0) {
                try {
                    // 解析输入的文本为整数
                    int number = Integer.parseInt(textField.getText().trim());
                    numberList.add(number);
                    counter++;

                    // 清空输入框,方便下一次输入
                    textField.setText("");

                    // 检查是否已完成10次输入
                    if (counter == 10) {
                        btnHesapla.setEnabled(false);
                        // 弹出消息对话框,提示完成并展示存储的数字
                        JOptionPane.showMessageDialog(null, "已成功输入10个数字!\n存储的数字列表:" + numberList);
                    }
                } catch (NumberFormatException e) {
                    // 处理非数字输入的情况,避免程序崩溃
                    JOptionPane.showMessageDialog(null, "请输入有效的整数!");
                }
            }
        });
        btnHesapla.setBounds(58, 48, 97, 25);
        contentPane.add(btnHesapla);
    }
}

关键改动说明:

  • 添加数字存储集合:用ArrayList<Integer>动态存储每次输入的数字,方便后续调用这些数据。
  • 修正计数器逻辑:原来的while循环是错误的,应该每次点击按钮只执行一次输入操作,计数器逐步累加,达到10次时触发禁用和弹窗。
  • 输入验证与异常处理:加入try-catch块处理用户输入非数字的情况,避免程序崩溃,同时给出友好的错误提示。
  • 按钮禁用与弹窗:当计数器达到10时,调用btnHesapla.setEnabled(false)禁用按钮,并用JOptionPane弹出提示框,还能直接展示存储的数字列表。
  • 优化输入体验:每次输入完成后自动清空文本框,让用户不用手动删除就能输入下一个数字。

另外提个小建议:虽然你用了null布局,但实际开发中更推荐使用FlowLayout、BorderLayout这类布局管理器,能让界面更好地适配不同的屏幕尺寸哦。

内容的提问来源于stack exchange,提问作者Uğur Hıdır

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:19:38