如何确保按钮被选中?

时间:2014-10-15 14:14:44

标签: java swing jpanel

作业是一个基本的投票系统,可以选择3个人或第4个按钮是"拒绝回答"

我不断收到错误,例如"找不到符号"

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Vote
{
    JLabel  label;

    public static void main (String[] args)

    {
        Vote sr = new Vote();
    }

    public Vote ()
    {

        JFrame frame = new JFrame("Please Choose your next President:");
        JRadioButton one = new JRadioButton("Name 1");
        JRadioButton two = new JRadioButton("Name 2");
        JRadioButton three = new JRadioButton("Name 3");
        JRadioButton four = new JRadioButton("I decline to answer");

        JPanel panel = new JPanel();
        panel.add(one);
        panel.add(two);
        panel.add(three);
        panel.add(four);

        ButtonGroup but = new ButtonGroup();

        but.add(one);
        but.add(two);
        but.add(three);
        but.add(four);

        one.addActionListener(new MyAction());
        two.addActionListener(new MyAction());
        three.addActionListener(new MyAction());
        four.addActionListener(new MyAction());

        label = new JLabel("Please Select a Canidate for President ");
        label.setHorizontalAlignment(JLabel.CENTER);
        frame.add(panel, BorderLayout.NORTH);
        frame.add(label, BorderLayout.CENTER);
        frame.setSize(400, 100);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public class MyAction implements ActionListener

    {
        public void actionPerformed (ActionEvent e)

        {
            if (jRadioButton.isSelected())
            {
                label.setText(e.getActionCommand());
                JOptionPane.showMessageDialog(null, "You have selected " +

                e.getActionCommand()
                        + " as the new President. Thank you for voting.");
            }
            else
            {
                label.setText(e.getActionCommand());
                JOptionPane.showMessageDialog(null, "You have selected " +

                e.getActionCommand() + " Thank you for voting.");
            }
        }
    }
}

所以基本功能是从4个可用的单选按钮中选择一个名称,选择任何按钮后,会出现一个新窗口,表示感谢您的投票。

我希望根据按下的单选按钮有不同的响应,所以如果按下一个按钮说"我拒绝回答"对它采取适当的反应。

请检查我的 If 语句,因为我认为大多数错误来自.isSelected的一部分。

2 个答案:

答案 0 :(得分:2)

if(jRadioButton.isSelected())

这里没有定义jRadioButton。

您希望获得触发事件的来源(即一,二,三或四):

if(((JRadioButton)e.getSource()).isSelected())

这将获取触发事件的对象,将其转换为JRadioButton,并检查是否选中了该单选按钮。

至少应该摆脱你的"找不到符号"错误。

答案 1 :(得分:0)

您没有名为jRadioButton的对象。 尝试改变

jRadioButton.isSelected()

((JRadioButton)e.getSource()).isSelected()

此外,如果您想检查是否选择了第4个 JRadioButton,请执行以下操作:

four.setActionCommand("fourth");

然后在if陈述

if ("fourth".equals(e.getActionCommand()) && ((JRadioButton)e.getSource()).isSelected())

它将检查动作命令是否匹配第四个单选按钮以及是否已选中