我需要制作一个按钮,该按钮的文本将根据整数而改变

Posted

技术标签:

【中文标题】我需要制作一个按钮,该按钮的文本将根据整数而改变【英文标题】:I need to make a button which text will change depending of an integer 【发布时间】:2022-01-18 23:12:42 【问题描述】:

我首先需要按钮的文本为 16。当按钮被点击时,它需要 16 到一半,当它被点击时,它一次又一次地一半,当它到达 1 时,它需要保持为 1。

int n=16;
        JButton button4 = new JButton(String.valueOf(n));
        frame.add(button4);
        button4.addActionListener(new ActionListener() 
            @Override
            public void actionPerformed(ActionEvent e) 
                button4.setText(String.valueOf(n/2));
            
        );

到目前为止,我尝试了这个,但它只达到了 8,仅此而已。 我添加了框架,我只需要这个按钮就可以了

【问题讨论】:

【参考方案1】:

下面的代码会不断地将 n 分成两半,直到它达到 1,然后保持在那里。

        int n=16;
        JButton button4 = new JButton(String.valueOf(n));
        frame.add(button4);
        button4.addActionListener(new ActionListener() 
            @Override
            public void actionPerformed(ActionEvent e) 
                button4.setText(String.valueOf(n));
                if( n > 1)
                    n = n / 2;
            
        );

确保在类头中的方法之外定义 n。

【讨论】:

它有效,但我需要将 n 声明为 static int n=16;在 static void main 之前,我为什么需要这样做? @Јаневски Ѓоре 当您从内部类中引用变量时,这些变量需要声明为静态的。【参考方案2】:

主要问题是您没有修改n。所以你只需继续将文本设置为16 / 2 = 8

您可以修改n(例如:n /= 2),或者您可以读取按钮的文本,转换为 int,将其减半,然后将按钮的文本设置为该值。不需要n

button4.addActionListener(new ActionListener() 
    @Override
    public void actionPerformed(ActionEvent e) 
        try 
            JButton b = (JButton)e.getSource();
            int n = Integer.parseInt(b.getText());
            if (n > 1) 
                b.setText(String.valueOf(n / 2));
            
        
        catch (Exception ex) 
    
);

此代码可重复用于任何按钮。

【讨论】:

以上是关于我需要制作一个按钮,该按钮的文本将根据整数而改变的主要内容,如果未能解决你的问题,请参考以下文章

SWT 按钮下拉控件

当用户输入整数时,MessageBox.Show 不会出现

将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别

单击按钮时更新文本文件

如何在 SliverAppBar 上制作一个动作按钮(不是真的,它只是一个文本框)

不改变按钮的文本颜色