【问题标题】:Java "press button" with different actions each time pressedJava“按钮”每次按下时都有不同的动作
【发布时间】:2021-11-02 22:56:11
【问题描述】:

我想编写一个小型计分器。我已经实现了两个按钮,按下时只返回一件事。我希望每次按下时都会出现一个新的分数。

下面是我已经写好的代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MyFrame extends JFrame implements ActionListener{
    
    
    JButton button;
    JButton button2;
    
    int clicked1Count = 0;
    int clicked2Count = 0;
    
    
    
Thank you in advance.

【问题讨论】:

    标签: java object user-interface button


    【解决方案1】:

    您可以像中一样制作 2 个变量

    clicked1Count = 0
    clicked2Count = 0
    

    在您执行的操作中,根据您的需要增加计数器。 然后打印出来

    if (ae.getSource()==button){
        clicked1Count++;
    }
    else if (ae.getSource()==button2) {
        clicked2Count++;
    }
    

    【讨论】:

    • 而不是 ++,只需 clicked1Count += 15;并 clicked2Count += 15;
    • 我应该如何从 30 到 40 - 例如 player1 得到 2 分 -> 30:0 然后他又得到 1 分,所以他现在的分数是 40:0
    • 只需检查计数是否为 30,然后在此期间仅增加 10。
    • 如果我点击按钮 1 三次而不点击按钮 2 一次,这将不起作用 - 请检查代码 - 我更新了它。
    【解决方案2】:

    您的问题是您的基本设计 基本上不存在。如果您没有花费大量时间预先考虑如何建模您想要使用的东西,那么您最终会得到过于复杂的意大利面条式代码。

    如:

    • 将“要增加的数量”放入一个数组中。然后,您的 clickCount 将用作该数组中的索引。
    • 使用一个监听每个按钮。
    • 不要使用保存您的值的原始 int 值,而是引入像 Player 这样具有 setScore 方法的类。甚至更多 OOP:播放器类获得一个方法 increaseScore()。并且该方法隔离分数如何增加的知识。

    换句话说:创建有用的抽象。这就是构成好的 OOP 的原因。而不是试图将所有代码都塞进一个动作监听器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多