我无法在一个框架中显示多个面板

时间:2019-06-16 10:53:11

标签: java swing

我正在用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();
                }


        }
    });

0 个答案:

没有答案