0

我需要在我在此程序中创建的字段中显示文本,该字段在 actionEvent 中标识,即 RadioButton 选择。我很难让选择显示在现场。请帮忙?

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

  public class JBasketball {

    public static void main(String args[]) {

      JFrame frame = new JFrame("JBasketball");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      JTextField field = new JTextField(16);

      JPanel panel = new JPanel(new FlowLayout());

      ButtonGroup group = new ButtonGroup();
        JRadioButton sixers = new JRadioButton("Philadelphia 76ers");
        JRadioButton raptors = new JRadioButton("Toronto Raptors");
        JRadioButton lakers = new JRadioButton("Los Angeles Lakers");
        JRadioButton sonics = new JRadioButton("Seattle Supersonics");
        JRadioButton bullets = new JRadioButton("Baltimore Bullets");

      ActionListener action = new ActionListener() {

        public void actionPerformed(ActionEvent actionEvent) {
          JRadioButton aButton = (JRadioButton) actionEvent.getSource();

           String team = aButton.getText();
  //This is where I need the field to display the team name
           field.setText(team);
        }
      };

      panel.add(sixers);
      group.add(sixers);
      panel.add(raptors);
      group.add(raptors);
      panel.add(lakers);
      group.add(lakers);
      panel.add(sonics);
      group.add(sonics);
      panel.add(bullets);
      group.add(bullets);
      panel.add(field);


      sixers.addActionListener(action);
      raptors.addActionListener(action);
      lakers.addActionListener(action);
      sonics.addActionListener(action);
      bullets.addActionListener(action);
      field.addActionListener(action);

      frame.add(panel);
      frame.setSize(500, 130);
      frame.setVisible(true);
      frame.setLocationRelativeTo(null);
    }
  }
4

1 回答 1

1

它工作正常,一旦你得到它编译。您只需要声明文本字段final

final JTextField field = new JTextField

原因是您试图访问匿名类中的局部变量,并且需要声明它final


您应该注意的其他事项:

  • 在 Event Dispatch Thread 上运行您的 Swing 应用程序。在初始线程中查看更多信息

  • 我不会main像你一样做所有的工作。为该类创建一个构造函数并在那里完成工作,或者一些 init 方法。并在 main 中实例化构造函数或调用最适合您的 init 方法。

于 2014-07-30T16:18:30.473 回答