[英]Read from file and display in GUI java
我需要从主要读取文件,而不是将红线(来自文件)添加到存储数组对象并在GUI类中显示的类中的数组。 我的问题是GUI没有任何内容。 Team
的getTeamName
返回null
。
我读了文件
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);
比我在MatchManager的Team []数组中添加行
public Team addTeam( Team teamName)
{
for(int i = 0; i < MAX_TEAMS; i++)
teams[i] = teamName;
return teamName;
}
我想在GUI中显示
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;
}
但是display.setText(t.getTeamName());
不返回任何东西。
这里有一些建议。 您可能需要重组整个程序。 我知道这似乎是“ 您是真的吗?” ,但是,我是认真的。 我知道您可能已经花了很多时间,最后要做的就是重新开始,但实际上,您似乎设计得很差。 这是一些指针。
这是一个示例,使用程序中的想法
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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.