如何通过Java中的按钮创建带有输入值的序列?

时间:2016-03-15 15:17:43

标签: java user-interface listener actionlistener

我想要在t1(TextField)中输入用户想要输入的数量的编程程序并通过b1(按钮)确认。在t2(TextField)中,用户给出第一个值并通过b2(按钮)输入,下次用户给出第二个值并再次通过b2(按钮)输入。它发生了很多次,因为n是高(来自第一个听众)。

如何更改程序执行的代码?

现在,当我给t2第一个值并按下按钮时,b2仍然按下,用户无法做任何事情。

final AtomicInteger n = new AtomicInteger();
ActionListener lis5 = new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        String a = t1.getText();
        n.set(Integer.parseInt(a));
    } 
};
b1.addActionListener(lis5); 

ActionListener lis6 = new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        //String b = t2.getText();     ??
        //n.set(Integer.parseInt(b));  ??

        int nn = n.get();
        int [] tab = new int[nn];
        for(int i=0;i<nn;i++){
            tab[i] = in.nextInt();
        }
    } 
};
b2.addActionListener(lis6);

1 个答案:

答案 0 :(得分:1)

首先,摆脱ActionListener中的for循环。 For循环适用于线性控制台程序,您可以使用扫描仪输入数据,但不能使用事件驱动的GUI输入数据。在这里,而不是for循环使用一个counter int变量,它在ActionListener中递增,并用于帮助您确定数据的放置位置。还要获取ActionListener的int数组 out 并进入类,以便它可以用于类的其余部分。在伪代码中:

in the class
    int array declared here BUT not initialized here.

    first Actionlistener
        get total count value
        initialize array using this value
    end first action listener

    second ActionListener
        int counter variable set to 0.
        action performed method
            if counter < total count
                get value from text field
                convert it to an int
                place value into intArray[counter]
                increment counter
            end if
        end action performed
    end second ActionLisener