【问题标题】:java radio button, updating a JLabel [closed]java单选按钮,更新JLabel [关闭]
【发布时间】:2014-06-26 01:31:34
【问题描述】:

我正在尝试制作此代码,以便在您每次单击提交时添加或减去显示的初始值。我已经搜索了多个关于如何完成此任务的线程,但我没有遇到任何非常清楚的问题。朝着正确的方向前进真的会有所帮助。

package TwoPanelDesign;

import javax.swing.JFrame;

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

import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JButton;

public class TwoPanelDesign extends JFrame {

    private static final long serialVersionUID = 1L;

    public TwoPanelDesign() {

        getContentPane().setLayout(null);

        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 151, 262);
        getContentPane().add(panel);
        panel.setLayout(null);

        final JLabel lblYourChoice = new JLabel("Your choice...");
        lblYourChoice.setBounds(10, 11, 172, 14);
        panel.add(lblYourChoice);

        final JRadioButton rdbtnAdd = new JRadioButton("Add 2");
        rdbtnAdd.setBounds(10, 32, 109, 23);
        panel.add(rdbtnAdd);


        final JRadioButton rdbtnMinus = new JRadioButton("Minus 2");
        rdbtnMinus.setBounds(10, 58, 109, 23);
        panel.add(rdbtnMinus);

        ButtonGroup group = new ButtonGroup();
        group.add(rdbtnAdd);
        group.add(rdbtnMinus);

        JPanel panel_1 = new JPanel();
        panel_1.setBounds(97, 0, 349, 262);
        getContentPane().add(panel_1);
        panel_1.setLayout(null);
        panel_1.setBackground(Color.BLUE);

        final JLabel label = new JLabel("0");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        label.setBounds(67, 0, 260, 262);
        label.setFont(new Font("Arial", Font.BOLD + Font.ITALIC, 45));
        panel_1.add(label);

        JButton btnSubmit = new JButton("Submit");
        btnSubmit.setBounds(10, 88, 88, 23);
        panel.add(btnSubmit);
        btnSubmit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                if (rdbtnAdd.isSelected())
                    label.setText("2");
                if (rdbtnMinus.isSelected())
                    label.setText("-2");
            }
        }
            );



    }

    public static void main(String[] args) {
        TwoPanelDesign A = new TwoPanelDesign();
        A.setSize(500,400);
        A.setVisible(true);
        A.setDefaultCloseOperation(EXIT_ON_CLOSE);

    }
}

【问题讨论】:

  • 这行得通吗?你有错误吗?
  • 对于example
  • 它完全有效,但它以 0 值开始,然后单击其中一个单选按钮;加 2 或减 2 并提交它你不能继续更新值,因为它只是用 2 或 -2 替换 0。我不希望它添加/减去 2,然后能够再次执行它并让它每次更新
  • 欢迎来到 Stack Overflow!您应该避免使用 null 布局。您无法控制影响在不同平台/操作系统上改变其尺寸的组件的尺寸要求/决定的因素

标签: java swing jframe jradiobutton


【解决方案1】:

你必须保留之前的结果:

public void actionPerformed(ActionEvent e){
  int v = Integer.parseInt(label.getText());
  if (rdbtnAdd.isSelected()){
    v += 2;
  } else {
    v -= 2;
  }
  label.setText(Integer.toString(v));
}

【讨论】:

  • 这就是我要找的。感谢您的快速响应。
  • @user3761914,很高兴为您提供帮助!
  • 如果它有助于解决问题,请accept回答。
猜你喜欢
  • 2015-01-28
  • 1970-01-01
  • 2016-05-14
  • 2020-01-17
  • 2021-07-19
  • 2013-05-05
  • 1970-01-01
  • 2018-06-12
  • 2018-09-23
相关资源
最近更新 更多