RemoveAll()之后没有从框架中删除多余的JLabel

时间:2016-05-24 18:51:12

标签: java swing jframe jpanel

我有一个按钮,可以找到特定日期的可用时间段并显示它们。但是,当我运行多个时,如果时隙数量少于之前的结果,则无法删除以前的JLabel。

我每次如何去除这些多余的标签?

提前感谢您的帮助!

timeCheck.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    farRightSidePanel.removeAll();

                    String selectedDoctor = doctorsDropdown.getSelectedItem().toString();
                    List<String> times = new ArrayList<String>(Arrays.asList(allAppointmentTimes));
                    List<String> takenAppointmentTimes = db.freeTimeslotsDB(
                            datePicker.getJFormattedTextField().getText(),
                            selectedDoctor.substring(selectedDoctor.length() - 2));

                    times.removeIf(t -> takenAppointmentTimes.contains(t));

                    for (String time : times) {
                        farRightSidePanel.add(new JLabel(time));
                        farRightSidePanel.revalidate();
                    }

                } catch (SQLException e1) {

                    e1.printStackTrace();
                }
            }

All available appointments

Problem with labels 2 appointments unavailable

1 个答案:

答案 0 :(得分:0)

重新绘制框架似乎解决了问题。

timeCheck.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    farRightSidePanel.removeAll();

                    String selectedDoctor = doctorsDropdown.getSelectedItem().toString();
                    List<String> times = new ArrayList<String>(Arrays.asList(allAppointmentTimes));
                    List<String> takenAppointmentTimes = db.freeTimeslotsDB(
                            datePicker.getJFormattedTextField().getText(),
                            selectedDoctor.substring(selectedDoctor.length() - 2));

                    times.removeIf(t -> takenAppointmentTimes.contains(t));

                    for (String time : times) {
                        farRightSidePanel.add(new JLabel(time));
                        farRightSidePanel.revalidate();
                        farRightSidePanel.repaint();
                    }

                } catch (SQLException e1) {

                    e1.printStackTrace();
                }
            }