【问题标题】:ActionPerformed action动作执行的动作
【发布时间】:2013-04-14 00:41:22
【问题描述】:

我的程序询问用户他完成了多少课程。因此,用户在 JTextField 中输入数字。我的程序必须使用在 JTextField 中输入的数字来创建一个包含所有已完成课程的数组。

package gpa;

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

public class Windows extends JFrame implements ActionListener
{
    private static String number = "";
    private content NbtextField = new content();

    public Windows()
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("GPA Professionnal Calculator");
        this.setSize(450, 250);
        this.setLocationRelativeTo(null);
        this.add(NbtextField, BorderLayout.CENTER);        
        this.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
        number = NbtextField.getNbtextField().getText();

    }

    private void test()
    {
        System.out.println (number);
    }

}

所以,我测试了我的程序是否正确地采用了用户输入的数字。但是我的问题是我的程序没有等待用户输入数字并继续运行!因此,我的其余代码在用户输入完成的课程数量之前运行。 我该如何解决这个问题,以便我的程序在继续之前等待用户输入,就像 r.readLine() 会做的那样

字符串测试 = r.readLine();

【问题讨论】:

  • 你之前的问题已经结束了,和这个一样,为什么要重新发帖?您也接受了一个答案,如果您有答案,为什么要重新发布相同的问题?
  • @Harlandraka 不,它完全相同的问题。我还没有成功。
  • private content NbtextField = new content(); - 使用标准 Java 命名约定。类名以大写字符开头。变量名不以大写字符开头。这在您上次的帖子中也提到过。在你学会这些标准之前,我什至不会尝试阅读你的代码。

标签: java events awt


【解决方案1】:

运行完号码后执行程序的其余部分:

@Override
public void actionPerformed(ActionEvent e)
{
    number = NbtextField.getNbtextField().getText();
    executeRestOfProgram(number);
}

【讨论】:

  • 将main方法的结尾(输入名称后应该运行的部分)提取到一个新方法中,并从actionPerformed()中调用该方法。
  • 是的,但我的程序的其余部分由我的主类中的大量方法组成。但我的 actionPerformed 在 windows 对象中。如何将程序的其余部分放在 actionPerformed 中
  • 好的,有没有可能把这个actionPerformed放到我的主类中?
  • 是的,但我不会那样做。它属于 Windows 类。主类应该将一个对象传递给 Window 构造函数,并且 actionPerformed 方法应该调用这个对象的一个​​方法。您似乎正在尝试使用 Swing,但还没有真正理解什么是对象和方法。从基础开始。 Swing 是一个复杂的 API,不知道对象和方法是如何工作的,不会让你走到任何地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多