gysgynus 2022-12-20 23:06 采纳率: 87.5%
浏览 14
已结题

改写一个包含按钮、文本框的窗口程序

改写一个包含按钮、文本框的窗口程序
加上新按钮之后怎么设置新的监听,addActionListener和原有的“确认”是一样的话好像不能用


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class WindowGuess extends JFrame implements ActionListener {
   int number; 
   byte count; 
   JLabel hintLabel;
   JTextField inputGuess;
   JButton buttonGetNumber,buttonEnter;   
   public WindowGuess() {
       number = (int)(Math.random()*100)+1;
       setLayout(new FlowLayout());
       buttonGetNumber = new JButton("请猜测一个数范围是(1~100)");
       add(buttonGetNumber);
       hintLabel = new JLabel("请输入你的猜测:",JLabel.CENTER);
       hintLabel.setBackground(Color.cyan);
       inputGuess = new JTextField(10); 
       add(hintLabel);
       add(inputGuess);
       buttonEnter = new JButton("确定"); 
       add(buttonEnter); 
       
       buttonEnter.addActionListener(this);
       buttonGetNumber.addActionListener((e)->{
                        number = (int)(Math.random()*100)+1;
                        count = 0;
                        hintLabel.setText("输入你的猜测:");
                        inputGuess.setText(null);
                        buttonEnter.setEnabled(true);
                      });//Lambada
       Font font = new Font("宋体",Font.PLAIN,30);
       //SetFont.setFont(font,hintLabel,buttonEnter,buttonGetNumber,inputGuess);
       setBounds(100,100,150,150);
       setVisible(true);
       setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
       validate();
    }
    public void actionPerformed(ActionEvent e) {
        buttonGetNumber.setEnabled(false);//只有猜对了才可以重新来set一个number
        int guess = 0;
        try {  guess=Integer.parseInt(inputGuess.getText());
               count++;
               if(guess==number) {
                  hintLabel.setText("猜对了(猜测次数:"+count+")");
                  buttonEnter.setEnabled(false);
                  buttonGetNumber.setEnabled(true);
               }
               else if(guess>number) {
                  hintLabel.setText("猜大了(猜测次数:"+count+")");
                  inputGuess.setText(null); 
               }
               else if(guess<number) {
                  hintLabel.setText("猜小了(猜测次数:"+count+")");
                  inputGuess.setText(null); 
               }
        }
        catch(NumberFormatException event) {
              hintLabel.setText("请输入数字字符");
        } 
   }
}

public class Example9_14 {
   public static void main(String args[]) {
       WindowGuess win = new WindowGuess();
       win.setTitle("猜数字");
       win.setBounds(10,10,460,360);

   }
}
  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-20 23:59
    关注

    望采纳

    如果要在这个窗口程序中添加新的按钮,并设置新的监听器,可以按照如下步骤进行操作:

    在窗口程序的构造函数中声明新的按钮:

    JButton newButton = new JButton("新的按钮");
    

    将新的按钮添加到窗口中:

    add(newButton);
    

    为新的按钮设置监听器:

    newButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // 在这里编写监听器的代码
        }
    });
    

    或者,使用 Lambda 表达式简化代码:

    newButton.addActionListener((e) -> {
        // 在这里编写监听器的代码
    });
    

    在这两种情况下,当新的按钮被点击时,监听器中的代码将被执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月21日
  • 已采纳回答 12月21日
  • 创建了问题 12月20日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系