如何拆分getActionCommand()以获取字符串中的第一个元素?

时间:2015-05-06 03:56:50

标签: java swing split

我的程序中有一组JRadioButton

public class SalePanel extends JPanel  implements View { 
    private JTextField sell = new JTextField(5);
    private ButtonGroup buttons = new ButtonGroup();
    private Stadium stadium;

我在这里添加了按钮:

private void build(Stadium stadium){
    add(buttonBox(stadium));
}

这是我创建按钮的方式:

private Box buttonBox(Stadium stadium)
{   Box box = Box.createVerticalBox();
    SaleListener listener = new SaleListener();
    for (Group group: stadium.groups()) {
        box.add(button(group, listener));

    }
    return box;
}   


private JRadioButton button(Group group, SaleListener listener){
    JRadioButton button  = new JRadioButton();
    button.addActionListener(listener);
    buttons.add(button);
    button.add(Box.createHorizontalStrut(35));
    button.add(new JLabel(group.name() + " @ $"+ formatted(group.price())));
    return button;  
}

按钮的标签位于:button.add(new JLabel(group.name()< ---这是另一个类中的标签,其名称类似于" Front"," Middle&# 34;或者其他什么。

我现在的任务是:

  1. 从事件中选取单选按钮标签(我使用getActionCommand()获取标签)
  2. 从标签中获取组名(我需要在空格上拆分字符串,并获取返回数组中的第一个字符串)。
  3. 从名称中找到该组: 查找名称为
  4. 的组

    所以,我是按照以下方式进行的:

    private class SaleListener implements ActionListener { 
        public void actionPerformed(ActionEvent e) { 
    
            String[] words = e.getActionCommand().split(" ");
            String groupName  = words[0];
            for (Group group: stadium.groups()) {
                if (group.matches(groupName)){
                    group.sell(sale());
                    update();
                }
            }
        }
    }
    

    不幸的是,它不起作用,我无法找到错误的地方。 你能否就这项任务给出任何建议?我做错了什么?

    P.S。这行代码String[] words = e.getActionCommand().split(" ");没有按我的意愿行事。我尝试System.out.println(words[0])并且它是空的,但应该有该组的名称:(

1 个答案:

答案 0 :(得分:2)

此...

button.add(new JLabel(group.name() + " @ $"+ formatted(group.price())));

没有意义。你应该使用......

button.setText(group.name() + " @ $"+ formatted(group.price()));

和...

button.setActionCommand(group.name());

如果你不关心文本的其余部分......