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

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

改写一个包含按钮、文本框的窗口程序
加上新按钮之后怎么设置新的监听,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日

悬赏问题

  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥100 栈回溯相关,模块加载后KiExceptionDispatch无法正常回溯了
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错