0

我正在创建一个小程序,所发生的只是它打开显示“有多少类型?” 然后出现一个文本字段。我输入一个数字并按回车,但没有任何反应!(我没有收到任何错误,但没有任何反应)

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class appletPracticw extends Applet implements ActionListener { 
TextField numG;
TextField g ;
TextField numS; 
TextField sog; 
private int number;
private int numberOfSongs;
String gener;
String songName;
public void go(){
    numG= new TextField(5);
    numS= new TextField(5);
    g= new TextField(5);
    sog= new TextField(5);
    numG.addActionListener(this);
    g.addActionListener(this);
    sog.addActionListener(this);
    numS.addActionListener(this);
    Tracker t=new Tracker();
    add(new Label("How many genres are there? "));  add(numG);
    for(int i=0;i<number;i++){
        catogories c=new catogories();
        add(new Label("Name of genere: "));  add(g);
        t.addCatogory(c,gener);
    }
    for(int x=0;x<number;x++){
        add(new Label("How many songs are there in "+t.getCatogories().get(x).getGenere()));  add(numS);
        for(int i=0;i<numberOfSongs;i++){
            Songs s=new Songs();
            add(new Label("The name of song "+(i+1)+" is"));  add(sog);
            t.getCatogories().get(x).addSong(s, songName);
        }
    }
}
public void actionPerformed(ActionEvent e) {
    if(e.getSource()==numG){
        String num=numG.getText();
        number=Integer.parseInt(num);
    }
    if(e.getSource()==numS){
        String num=numS.getText();
        numberOfSongs=Integer.parseInt(num);
    }
    if(e.getSource()==g){
        gener=g.getText();
    }
    if(e.getSource()==sog){
        songName=sog.getText();
    }
}
public void init() {
    go();

} 公共 appletPracticw() {

} }

4

1 回答 1

2

该字段number使用 value 初始化0

您构建小程序,添加标签和文本字段。看起来您假设程序在此行等待用户输入:

add(new Label("How many genres are there? "));  add(numG);

实际上它只是创建用户界面而不等待输入。

所以这两个for循环都被执行了,但number仍然0如此,这些循环永远不会进入。

您应该做的是在方法中执行实际操作(在您的情况下,这是通过添加新标签和字段来更改 GUI) ,以便在用户输入流派数量actionPerformed创建类别标签和输入字段。第二个循环也必须这样做。

于 2013-05-01T21:10:42.770 回答