我正在用Java Swing制作一个简单的闹钟。用户可以输入警报信息,该信息将在一行中保存到文本文件中。 如果用户添加新警报,它将显示所有保存在文本文件中的警报。为了显示所有警报,我使用了一个面板,其中可以显示一个警报信息,然后将多个面板放在一个框架中。
这里的问题是,当我制作Alarm1时,它很好地表明我具有Alarm1。但是,当我添加Alarm2时,它应该表明我具有Alarm1和Alarm2。 但是,它表明我有Alarm1,Alarm1,Alarm2。 当我添加Alarm3时,它显示为Alarm1,Alarm1,Alarm2,Alarm1,Alarm2,Alarm3。似乎旧的面板仍然存在。我想摆脱旧的东西。
我在每次添加警报的地方都添加了代码,它会进行更新。
public void updateGUI() {
pnList.removeAll();
ListIterator<AlarmPanel> litr = lstPanel.listIterator();
while (litr.hasNext()) {
AlarmPanel element = litr.next();
pnList.add(element);
}
revalidate();
repaint();
}
以下是一些其他代码,以防万一,您需要查看添加警报部分的情况。我逐行保存了警报信息。读者正在逐行读取文件并将该行标记为不同类型的信息...信息的存储方式
Alarm2 10 35 PM WedThuFriTueWedThu
this.btnAdd = new JButton("Add");
this.btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SetAlarmDiag = new SetAlarm(frame);
SetAlarmDiag.setVisible(true);
try {
BufferedReader reader = new BufferedReader(new FileReader("AlarmList.txt"));
String line = reader.readLine();
while (line != null) {
StringTokenizer tokenizer = new StringTokenizer(line);
String alarmName = tokenizer.nextToken();
String alarmHour = tokenizer.nextToken();
String alarmMinute = tokenizer.nextToken();
String alarmAMPM = tokenizer.nextToken();
String alarmRepeatDays = tokenizer.nextToken();
String firstInfo = alarmName + " " + alarmHour + " : " + alarmMinute + " " + alarmAMPM;
alarmTitle.add(firstInfo);
alarmTime.add(alarmRepeatDays);
System.out.println(alarmName + alarmHour + alarmMinute + alarmAMPM); // debugging
makePanel();
line = reader.readLine();
}
reader.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});