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
相关产品推荐
相关产品推荐

