我需要在main中读取文件,而不是将红线(从文件中)添加到存储数组对象的类中的数组,并在GUI类中显示。我的问题是没有任何内容进入GUI。来自getTeamName
的{{1}}会返回Team
。
我在
中阅读了该文件null
比在MatchManager
中向Team []数组添加行 fr = new FileReader("TeamsIn.txt");
Scanner in = new Scanner(fr);
while (in.hasNextLine()){
String line = in.nextLine();
team = new Team(line);
team = teamIn.addTeam(team);
我想在GUI中显示
public Team addTeam( Team teamName)
{
for(int i = 0; i < MAX_TEAMS; i++)
teams[i] = teamName;
return teamName;
}
但是 Team t = new Team(teamName);
display = new JTextArea(ROWS, COLUMNS);
display.setEditable(false);
display.setText(t.getTeamName());
JScrollPane scrollPane = new JScrollPane(display);
return scrollPane;
public class Team {
public Team(String teamName){
this.teamName = teamName;
//System.err.println(teamName);
}
public String getTeamName(){
return teamName;
}
public String setTeamName(String tName){
return teamName;
}
并没有返回任何内容。
答案 0 :(得分:2)
这里有一些建议。您可能想重组整个程序。我知道它可能看起来像#34; 你是真的吗?&#34; ,但是我是认真的。我知道你可能花了很多时间在它上面,你要做的最后一件事就是重新开始,但实际情况是,你似乎有一个非常糟糕的设计。这是一些指针。
以下是一个例子,使用程序中的想法
public class MatchManager { // This class holds all the teams
private List<Team> teams = new ArrayList<Team>();
private int countTeam;
private static int MAX_TEAMS=8;
public MatchManager(){
try {
FileReader fr = new FileReader("TeamsIn.txt");
Scanner in = new Scanner(fr);
while (in.hasNextLine()){
String line = in.nextLine();
Team team = new Team(line);
teams.add(team);
}
} catch ( ... ) {}
}
public List<Team> getTeams(){
return teams;
}
}
上述代码的作用是实例化MatchManager
后,所有团队都会被填充。
JavaBallTournamentGUI
类是程序应该从中启动的类。记住我是如何谈论保持数据和视图分开的。如果你考虑一下,数据应该运行吗?不,数据不是程序。 GUI虽然是一个程序。因此,运行GUI程序从 Model 类MatchManager
获取数据。 像这样。
public class JavaBallTournamentGUI extends JFrame {
MatchManager manager = new MatchManager();
List<Team> teams;
public JavaBallTournamentGUI(){
teams = manager.getTeams();
}
}
现在,您可以使用GUI类中MatchManager
的所有数据。
Team
课程。这真的没有必要。只要您想获取团队数据,就可以从团队列表中调用它,String oneTeam = teams.get(2).getTeamName();
textField.setText(oneTeam);
您是否注意到这一切如何顺畅地流动?如果你不抱歉,我尽力解释。但我希望你能得到这个要点。这种类型的设计更清洁。
编辑:打印全部
如果是JTextArea
for (Team team : teams){
textArea.append(team.getTeamName() + "\n");
}