Java 如何根据按钮选择JRadioButton

Java 如何根据按钮选择JRadioButton,java,swing,event-handling,actionlistener,jradiobutton,Java,Swing,Event Handling,Actionlistener,Jradiobutton,请参阅我的问题开始代码,我为按钮添加了所有addActionListener 但是当单选按钮使用AddItemListNet时,我只实现ActionListener如何实现ItemListener,因此当用户从单选按钮中选择sw并单击add item时,我可以设置法律~它会将项目添加到我之前创建的正确数组中 exitButton.addActionListener(new ButtonWatcher()); addButton.addActionListener(new Bu

请参阅我的问题开始代码,我为按钮添加了所有addActionListener 但是当单选按钮使用AddItemListNet时,我只实现ActionListener如何实现ItemListener,因此当用户从单选按钮中选择sw并单击add item时,我可以设置法律~它会将项目添加到我之前创建的正确数组中

     exitButton.addActionListener(new ButtonWatcher());
     addButton.addActionListener(new ButtonWatcher());
     copyButton.addActionListener(new ButtonWatcher());
     showButton.addActionListener(new ButtonWatcher());
     rButton.addItemListenet(new ButtonWatcher());

    }

     private class ButtonWatcher implements ActionListener{

         public void actionPerformed(ActionEvent a){
             Object buttonPressed=a.getSource();
             if(buttonPressed.equals(exitButton))
             {
             System.exit(0);
             }

             if(buttonPressed.equals(addButton) && rButton1.isSelected())
             {

                 //do the action
             } 
完整代码

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

/**
 *
 * @author isslam
 */
public class MyFrameMain extends JFrame{
    Equipment newq = new Equipment();
    private final JLabel iLabel;
    private final JLabel nLabel;
    private final JTextField iJTextField;
    private final JTextField nJTextField;
    private final JTextField swTextField;
    private final JTextField hwTextField;
    private final JLabel jItemCounter;
    private final JTextArea reSoulte;
    private final JButton addButton;
    private final JButton showButton;
    private final JButton copyButton;
    private final JButton exitButton;

    public MyFrameMain(String title){
    setSize(500, 500);
    setTitle(title);
    setDefaultCloseOperation(MyFrameMain.EXIT_ON_CLOSE);

    iJTextField = new JTextField();
    nJTextField = new JTextField();
    swTextField = new JTextField();
    hwTextField = new JTextField();
    nLabel = new JLabel("ID: ");
    iLabel = new JLabel("Name: ");
    jItemCounter = new JLabel("Number of current Item");

    reSoulte = new JTextArea(15,20);
    reSoulte.setEditable(false);
    reSoulte.setText("Array is empty");

    addButton = new  JButton("Add an item into the Array");
    showButton = new JButton("Show all items in the Array");
    copyButton = new JButton("Copy Array into File");
    exitButton = new JButton("Exite");


    JRadioButton rButton1 = new JRadioButton("SW Version",false);
    JRadioButton rButton2 = new JRadioButton("HW Type",false);
    JRadioButton rButton3 = new JRadioButton("General",true);    

     ButtonGroup BGroup = new ButtonGroup();
     BGroup.add(rButton1);
     BGroup.add(rButton2);
     BGroup.add(rButton3);

     JPanel rbPanel = new JPanel(new GridLayout(5,1));
     rbPanel.add(nLabel);
     rbPanel.add(iLabel);
     rbPanel.add(rButton1);
     rbPanel.add(rButton2);
     rbPanel.add(rButton3);

     JPanel bpanel = new JPanel(new GridLayout(2,2));
     bpanel.add(addButton);
     bpanel.add(showButton);
     bpanel.add(copyButton);
     bpanel.add(exitButton);

     JPanel jtfPanel = new JPanel(new GridLayout(5,1));
        jtfPanel.add(iJTextField);
        jtfPanel.add(nJTextField);
        jtfPanel.add(swTextField);
        jtfPanel.add(hwTextField);
        jtfPanel.add(jItemCounter);

     JPanel topPanel = new JPanel(new BorderLayout());
        topPanel.add(rbPanel, BorderLayout.WEST);
        topPanel.add(jtfPanel, BorderLayout.CENTER);

     JPanel mainPanel = new JPanel(new BorderLayout());
        mainPanel.add(bpanel, BorderLayout.SOUTH);
        mainPanel.add(reSoulte, BorderLayout.CENTER);
        mainPanel.add(topPanel, BorderLayout.NORTH);


     Container pane = getContentPane();
     pane.add(mainPanel);


     exitButton.addActionListener(new ButtonWatcher());
     addButton.addActionListener(new ButtonWatcher());
     copyButton.addActionListener(new ButtonWatcher());
     showButton.addActionListener(new ButtonWatcher());
    //rButton.addItemListenet(new ButtonWatcher());

    }

     private class ButtonWatcher implements ActionListener{

         public void actionPerformed(ActionEvent a){
             Object buttonPressed=a.getSource();
             if(buttonPressed.equals(exitButton))
             {
             System.exit(0);
             }

             if(buttonPressed.equals(addButton) && rButton1.isSelected())
             {

                 //do the action
             } 

        }
     }     
}

我不确定要填充什么数组,但用getText获取文本

如果任何输入都是数字,并且您需要数值,则需要解析

此外,这些需要声明为类成员。您已经在构造函数中声明了它们

JRadioButton rButton1 = new JRadioButton("SW Version",false);
JRadioButton rButton2 = new JRadioButton("HW Type",false);
JRadioButton rButton3 = new JRadioButton("General",true); 
在构造函数中声明,它们不在侦听器类的范围内

public class MyFrameMain extends JFrame{
    private final JLabel iLabel;
    private final JLabel nLabel;
    private final JTextField iJTextField;
    private final JTextField nJTextField;
    private final JTextField swTextField;
    private final JTextField hwTextField;
    private final JLabel jItemCounter;
    private final JTextArea reSoulte;
    private final JButton addButton;
    private final JButton showButton;
    private final JButton copyButton;
    private final JButton exitButton;
    JRadioButton rButton1 = new JRadioButton("SW Version",false);
    JRadioButton rButton2 = new JRadioButton("HW Type",false);
    JRadioButton rButton3 = new JRadioButton("General",true); 

    public MyFrameMain(String title){

而且,看起来你并不需要单选按钮的监听器,因为事件是不必要的。JButton侦听事件,并在actionPerformed中检查单选按钮是否被选中。因此,不需要单选按钮来监听任何事件,JButton就可以做到这一点。

尝试以下代码。我添加了一个列表项,并在用户选择rButton1并单击addButton按钮时,将swTextField TextField的值添加到该项中

将ButtonGroup与上下文的JRadioButton一起使用。 使用jRadioButton.setActionCommandString为您的上下文软件版本和任何类似的内容设置相应的操作名称。 使用ArrayList添加上下文中的项。尝试使用HashMap映射每个这样的数组列表,例如,HashMap,其中SW版本或任何类似名称将是键 尝试使用匿名类的方法将侦听器添加到每个操作按钮中。 因此,add action的一个示例编码将描述ButtonGroup的用途:

教程和参考:

,检查按钮组的演示
@peeskillet对这种情况一无所知你的问题很不幸。同时发布你的Equipment类代码以及你所说的方法about@peeskillet你现在可以看了,我不能理解你所说的事件处理,而不是类!!我想你可以用3种不同的方式来处理事件。。1-你可以在主类上实现ActionListener 2-你可以创建一个实现ActionListener的类3-你可以通过为每个按钮添加一个监听器来使用anymous类我想这是更好的解决方案,希望能帮助Salamse查看我的完整答案。这应该是我的下一步,因为如果ButtonPressed.equalsaddButton&&rButton1.isSelected不工作我的代码工作,请尝试此操作,如果ButtonPressed.equalsaddButton&&rButton1.isSelected不起作用,我已对此代码进行了更改,以查看此语句,因为我不知道如何使用actionListener实现ItemListener以同时使用按钮和单选按钮您不需要为radiobutton实现侦听器。你需要修正你的范围。您的侦听器类找不到radiobutton。我的回答解释了这一点it@isslamakkilah,我认为你应该重新考虑一下设计。事实上,使用带有JRadioButton的BUttonGroup并按照我的回答中的建议添加actionListener内联将大大简化您的工作
public class MyFrameMain extends JFrame{
    private final JLabel iLabel;
    private final JLabel nLabel;
    private final JTextField iJTextField;
    private final JTextField nJTextField;
    private final JTextField swTextField;
    private final JTextField hwTextField;
    private final JLabel jItemCounter;
    private final JTextArea reSoulte;
    private final JButton addButton;
    private final JButton showButton;
    private final JButton copyButton;
    private final JButton exitButton;
    JRadioButton rButton1 = new JRadioButton("SW Version",false);
    JRadioButton rButton2 = new JRadioButton("HW Type",false);
    JRadioButton rButton3 = new JRadioButton("General",true); 

    public MyFrameMain(String title){
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

/**
 *
 * @author isslam
 */
public class Test extends JFrame {

    private final JLabel iLabel;
    private final JLabel nLabel;
    private final JTextField iJTextField;
    private final JTextField nJTextField;
    private final JTextField swTextField;
    private final JTextField hwTextField;
    private final JLabel jItemCounter;
    private final JTextArea reSoulte;
    private final JButton addButton;
    private final JButton showButton;
    private final JButton copyButton;
    private final JButton exitButton;
    JRadioButton rButton1;
    java.util.List<String> item = new ArrayList<String>();

    public Test(String title) {
        setSize(500, 500);
        setTitle(title);
        setDefaultCloseOperation(Test.EXIT_ON_CLOSE);

        iJTextField = new JTextField();
        nJTextField = new JTextField();
        swTextField = new JTextField();
        hwTextField = new JTextField();
        nLabel = new JLabel("ID: ");
        iLabel = new JLabel("Name: ");
        jItemCounter = new JLabel("Number of current Item");

        reSoulte = new JTextArea(15, 20);
        reSoulte.setEditable(false);
        reSoulte.setText("Array is empty");

        addButton = new JButton("Add an item into the Array");
        showButton = new JButton("Show all items in the Array");
        copyButton = new JButton("Copy Array into File");
        exitButton = new JButton("Exite");


        rButton1 = new JRadioButton("SW Version", false);
        JRadioButton rButton2 = new JRadioButton("HW Type", false);
        JRadioButton rButton3 = new JRadioButton("General", true);

        ButtonGroup BGroup = new ButtonGroup();
        BGroup.add(rButton1);
        BGroup.add(rButton2);
        BGroup.add(rButton3);

        JPanel rbPanel = new JPanel(new GridLayout(5, 1));
        rbPanel.add(nLabel);
        rbPanel.add(iLabel);
        rbPanel.add(rButton1);
        rbPanel.add(rButton2);
        rbPanel.add(rButton3);

        JPanel bpanel = new JPanel(new GridLayout(2, 2));
        bpanel.add(addButton);
        bpanel.add(showButton);
        bpanel.add(copyButton);
        bpanel.add(exitButton);

        JPanel jtfPanel = new JPanel(new GridLayout(5, 1));
        jtfPanel.add(iJTextField);
        jtfPanel.add(nJTextField);
        jtfPanel.add(swTextField);
        jtfPanel.add(hwTextField);
        jtfPanel.add(jItemCounter);

        JPanel topPanel = new JPanel(new BorderLayout());
        topPanel.add(rbPanel, BorderLayout.WEST);
        topPanel.add(jtfPanel, BorderLayout.CENTER);

        JPanel mainPanel = new JPanel(new BorderLayout());
        mainPanel.add(bpanel, BorderLayout.SOUTH);
        mainPanel.add(reSoulte, BorderLayout.CENTER);
        mainPanel.add(topPanel, BorderLayout.NORTH);


        Container pane = getContentPane();
        pane.add(mainPanel);


        exitButton.addActionListener(new ButtonWatcher());
        addButton.addActionListener(new ButtonWatcher());
        copyButton.addActionListener(new ButtonWatcher());
        showButton.addActionListener(new ButtonWatcher());
        //rButton.addItemListenet(new ButtonWatcher());

    }

    private class ButtonWatcher implements ActionListener {

        public void actionPerformed(ActionEvent a) {
            Object buttonPressed = a.getSource();
            if (buttonPressed.equals(exitButton)) {
                System.exit(0);
            }

            if (buttonPressed.equals(addButton) && rButton1.isSelected()) {

                item.add(swTextField.getText());
                System.out.println(item);

            }

        }
    }

    public static void main(String args[]) {
        Test t = new Test("Test");
        t.setVisible(true);
    }
}
addButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                 String actionCommand = buttonGroup1.getSelection()
                                                         .getActionCommand();

                  // actionCommand = "SW Version"
                 map.get(actionCmmand).add(equipment);      
              }
        });