我有两个JFrames
:
JFrameA
有JList
个cellrender
来显示Cita
个对象,JPopupMenu
触发JFrameB
来设置和删除来自JList
。
public class JFrameA extends javax.swing.JInternalFrame {
public static DefaultListModel model = new DefaultListModel();
HashMap<Cita, Icon> elementos = new HashMap();
Cita cita;
//method to retrieve from DB the objects
private void fillJList(){
//create object to add to the model
while(rs.next()){
Cita = new Cita(rs.getTime("TimeColumn").....);
model.addElement(cita);
elementos.put(cita, aIcon);
}
jlistDia.setModel(model);
RenderJList render = new RenderJList(elementos);
JList.setCellRenderer(render);
}
JFrameB
收到Cita
个对象进行更新并将其设置为JFrameA
的模型
public class JFrameB extends javax.swing.JFrame {
Cita objectToModify;
public JFrameB(Cita objetToModify){
this.objectToModify=objectToModify;
}
private void updates(){
//get the new data of the object to set the JList of frameA
Cita updatedObject = new Cita();
JFrameA.model.set(objectToModify.getIndex(), updatedObject);
//JFrameA.model is updated with no problems, but I want to sort the Cita objects by a Time param.
sortModel(VistaDiaria.m);
}
private void sortModel(DefaultListModel model) {
List<Cita> list = new ArrayList<>();
for (int i = 0; i < model.size(); i++) {
list.add((Cita) model.get(i));
}
Collections.sort(list);
model.removeAllElements();
for (Cita s : list) {
model.addElement(s);
}
}
方法sortModel
抛出ClassCastException
并且我不知道为什么,我的Cita
类实现了Comparable这就是我得到的StackTrace。
java.lang.ClassCastException: expeDiente.Cita cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:316)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:184)
at java.util.Arrays.sort(Arrays.java:1244)
at java.util.Collections.sort(Collections.java:166)
Cita
上课:
import java.text.SimpleDateFormat;
import java.sql.Time;
public class Cita implements Comparable<Cita> {
public Time horaInicio;
public Time horaTermino;
public Paciente paciente;
public String actividad;
public String observacion;
public String recordar;
public String ciudad;
public String TipoCita;
public String fecha;
public int idPaciente;
public int idCita;
public Cita() {
}
public Cita(String fecha, Time horaInicio, Time horaTermino, int idPaciente, String actividad,
String observacion, String recordar, String ciudad, String tipoCita) {
this.fecha = fecha;
this.horaInicio = horaInicio;
this.horaTermino = horaTermino;
this.idPaciente = idPaciente;
this.actividad = actividad;
this.observacion = observacion;
this.recordar = recordar;
this.ciudad = ciudad;
this.TipoCita = tipoCita;
}
public Cita(int idCita, String fecha, Time horaInicio, Time horaTermino, Paciente paciente, String actividad,
String observacion, String recordar, String ciudad, String tipoCita) {
this.idCita = idCita;
this.fecha = fecha;
this.horaInicio = horaInicio;
this.horaTermino = horaTermino;
this.paciente = paciente;
this.actividad = actividad;
this.observacion = observacion;
this.recordar = recordar;
this.ciudad = ciudad;
this.TipoCita = tipoCita;
}
@Override
public int compareTo(Cita o) {
return (getHoraInicio().compareTo(o.getHoraInicio()));
}
public int getIdCita() {
return idCita;
}
public void setIdCita(int idCita) {
this.idCita = idCita;
}
public Time getHoraInicio() {
return horaInicio;
}
public void setHoraInicio(Time horaInicio) {
this.horaInicio = horaInicio;
}
public Time getHoraTermino() {
return horaTermino;
}
public void setHoraTermino(Time horaTermino) {
this.horaTermino = horaTermino;
}
public Paciente getPaciente() {
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
public String getActividad() {
return actividad;
}
public void setActividad(String actividad) {
this.actividad = actividad;
}
public String getObservacion() {
return observacion;
}
public void setObservacion(String observacion) {
this.observacion = observacion;
}
public String getRecordar() {
return recordar;
}
public void setRecordar(String recordar) {
this.recordar = recordar;
}
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
public String getTipoCita() {
return TipoCita;
}
public void setTipoCita(String TipoCita) {
this.TipoCita = TipoCita;
}
public int getIdPaciente() {
return idPaciente;
}
public void setIdPaciente(int idPaciente) {
this.idPaciente = idPaciente;
}
@Override
public int hashCode() {
int hash = 3;
hash = 71 * hash + this.idCita;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Cita other = (Cita) obj;
if (this.idCita != other.idCita) {
return false;
}
return true;
}
public String getFecha() {
return fecha;
}
public void setFecha(String fecha) {
this.fecha = fecha;
}
@Override
public String toString() {
SimpleDateFormat formatoInicio = new SimpleDateFormat("hh:mm");
SimpleDateFormat formatoTermino = new SimpleDateFormat("hh:mm aa");
return paciente.getNombre() + ", "
+ formatoInicio.format(horaInicio) + "-"
+ formatoTermino.format(horaTermino);
}
}
答案 0 :(得分:1)
此处显示的Cita
课程没有编译。所以你的其他类看到的编译版本不是这个。如果您可以修复Cita
类中的编译错误,其他类也将开始正常工作。
答案 1 :(得分:0)
编译器使用的定义不是我的Cita类的最后一个实现,我更改了包的名称并替换了jar和导入,并且它有效。