JTable, менять, что getHeaderValue возвратил Object вместо String

Я работаю в создании расписания встреч.

У меня есть один JTable где она первый колонна наполнила ее "ручной" формой с доступными расписаниями, и остальные колонны присоединяются динамической формы, читая BD таблицу Empleados. Использовав объект DefaultTableModel и добавлять каждую колонну, я добавляю объект тип Empleado и из-за toString моего объекта я печатаю имя служащего как Header в каждой колонне.

horariosjTable

Я готов осуществить функциональность, которой, дав ему право клик в ячейке, он может добавлять встречу для некоего служащего в некоем расписании. Я хотел бы взять объект Empleado отборной колонны, и не только String HeaderValueа именно, как он мог бы возвращать весь объект Empleado который я, заблаговременно, добавил, когда я создал таблицу, так как я нуждаюсь в том, чтобы сохранять IdEmpleado и не только имя. Я попробовал создавать мой собственный класс TableColumn или DefaultTableModel, но я не получаю хороший результат.

Я добавляю код:

В этой функции я гружу персонал и добавляю их как колонны:

public void cargaColsEmp(DefaultTableModel dtm, JTable t){        
    ConnectMySql c = new ConnectMySql();

    Statement stmt;
    String query;
    ResultSet rs;

    int numEmp = 0;

    try {
        stmt = c.conn.createStatement();
        query = "select * from Empleados where Estatus = 1 order by IdEmpleado";
        rs = stmt.executeQuery(query);

        while(rs.next()){
            int idEmpleado = rs.getInt("IdEmpleado");
            String nombreEmpleado = rs.getString("NombreEmpleado");
            double sueldoBase = rs.getDouble("SueldoBase");
            double porcentajeServicio = rs.getDouble("PorcentajeServicio");
            int estatus = rs.getInt("Estatus");

            Empleados e = new Empleados(idEmpleado,nombreEmpleado,sueldoBase,porcentajeServicio,estatus);
            dtm.addColumn(e);
            numEmp++;
        }//close while
    }   
}    

С этим, я беру расписание и стараюсь брать объект колонны, но только могу направлять String имени:

String hora = (String) horario_table.getValueAt(horario_table.getSelectedRow(), 0);
TableColumn emp = horario_table.getColumn(horario_table.getColumnName(horario_table.getSelectedColumn()));

System.out.println("Hora: " + hora);
System.out.println("Columna: " + emp.getHeaderValue());

Добавляя Class Empleados:

public class Empleados implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "IdEmpleado")
    private Integer idEmpleado;
    @Basic(optional = false)
    @Column(name = "NombreEmpleado")
    private String nombreEmpleado;
    @Basic(optional = false)
    @Column(name = "SueldoBase")
    private double sueldoBase;
    @Basic(optional = false)
    @Column(name = "PorcentajeServicio")
    private double porcentajeServicio;
    @Basic(optional = false)
    @Column(name = "Estatus")
    private int estatus;

    public Empleados() {
    }

    public Empleados(Integer idEmpleado) {
        this.idEmpleado = idEmpleado;
    }

    public Empleados(Integer idEmpleado, String nombreEmpleado, double sueldoBase, double porcentajeServicio, int estatus) {
        this.idEmpleado = idEmpleado;
        this.nombreEmpleado = nombreEmpleado;
        this.sueldoBase = sueldoBase;
        this.porcentajeServicio = porcentajeServicio;
        this.estatus = estatus;
    }
}

//Больше все getters и сеттеры для переменных.

После того, как скроллировали выполнять линию: System.out.println ("Колонна:" + emp.getHeaderValue () .getClass () .getName ());

Он возвращает мне, что класс - "String", - здесь то, что заинтересовало бы меня изменять, что она objecto, который возвращается снаружи, в моем случае, из типа, Использованный

introducir la descripción de la imagen aquí

0
задан 11.03.2019, 18:18
1 ответ

хороший dГ - в, я смог делать то, в чем он нуждался, и хочу оставить я soluciГіn, если в кого-то он помогает ему для будущих проектов.

1) Верит мой собственный class для aГ±adir в DefaultTableModel в мою таблицу. Класс названный "MyDefTableModel" увеличивает класса "DefaultTableModel". AquГ - верь в метод так называемый "getColEmp", который возвращает мне тип Object. Эта funciГіn очень сходная с нею funciГіn "getColumName", но как estГЎ он возвращает тебе String, дело в том, что я был должен создавать новость и не только sobreescribirla. Я присоединяю cГіdigo:

public class MyDefTableModel extends DefaultTableModel { public MyDefTableModel () { супер (); }

public Object getColEmp(int column) {
    Object id = null;
    // This test is to cover the case when
    // getColumnCount has been subclassed by mistake ...
    if (column < columnIdentifiers.size() && (column >= 0)) {
        id = columnIdentifiers.elementAt(column);
    }

    return (id == null) ? getColEmp(column) : id;
}

@Override
public boolean isCellEditable(int row, int col){
    return false;
}

}//close class

Имея это, уже только использовал этот новый класс с моей таблицей и использовал objecto этого нового класса, чтобы брать objecto явись лично, что estГЎ в headers колонн моей таблицы. Я присоединяю cГіdigo:

String час = (String) horario_table.getValueAt (horario_table.getSelectedRow (), 0); Использованные служащий = (Персонал) mydtm.getColEmp (horario_table.getSelectedColumn ());

и сейчас уже с использованным obejto я могу иметь доступ в признаки класса.

Благодаря сообществу, если они нравятся, могут считать решенным вопрос.

типов Привета!!

0
ответ дан 02.12.2019, 05:48

Теги

Похожие вопросы