我有一个按钮,可以找到特定日期的可用时间段并显示它们。但是,当我运行多个时,如果时隙数量少于之前的结果,则无法删除以前的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();
}
}
答案 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();
}
}