Как объединить данные из 2 разных таблиц в один JTable - PullRequest
0 голосов
/ 17 мая 2019

Я делаю программу для системы управления сотрудниками. Теперь я делаю форму CRUD для регистрации сотрудников, я разделил код src на уровне данных, бизнес-логике и графическом интерфейсе. В графическом интерфейсе я разделил графическое представление и графическую модель вМодель Gui Я создал EmployeeTableModel, чтобы указать, как я хочу отображать данные для таблицы Employee, но в этой таблице я получил данные из более чем одной таблицы, одна таблица Employee из базы данных, другая таблица Phone. Я успешно получилданные из таблицы сотрудников, и я могу поместить эти данные и в таблицу сотрудников, и в таблицу телефонов в базе данных, но я не могу получить их в TableModel, я могу получить данные только от сотрудника.

ФОТОГРАФИИ ТАБЛИЦЫ

ВСЕ КОД ИСТОЧНИКА ЗДЕСЬ - GIT

Я попытался изменить код в своем EmployeeTableModel, чтобы принять больше столбцов и проложить путь кдобавить данные из телефонной таблицы тоже, но не сработало, потому что у каждого сотрудника есть 2 -3 телефонных номера и указан Employee_IDed в качестве внешнего ключа для таблицы Phone. У каждого сотрудника есть 3 телефона, как я сказал, и когда мы указываем, какой телефон мы хотим получить, это зависит от employee_id, который является внешним ключом в таблице Phone.

public class PunetoriTableModel extends AbstractTableModel {

List<Punetori> list;
TelefoniRepository tr = new TelefoniRepository();
PunetoriRepository pr = new PunetoriRepository();

String[] cols = {"Nr.", "Nr-Departmentit", "Emri", "Mbiemri", "Email", "Qyteti","Adresa","tel1","tel2"};

public PunetoriTableModel() {
}

public PunetoriTableModel(List<Punetori> list) {
    this.list = list;
}

public void addList(List<Punetori> list) {
    this.list = list;
}

@Override
public String getColumnName(int col) {
    return cols[col];
}

@Override
public int getRowCount() {
    return list.size();
}

public void remove(int row) {
    list.remove(row);
}

public Punetori getPersoni(int index) {
    return list.get(index);
}

@Override
public int getColumnCount() {
    return cols.length;
}

public String getDateToString(Date d) {
    DateFormat da = new SimpleDateFormat("dd-MM-yyyy");
    return da.format(d);

}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
     Punetori p = list.get(rowIndex) ;


        switch (columnIndex) {
            case 0:
                return p.getPunetoriID();
            case 1:
                return p.getDepartmentiId();
            case 2:
                return p.getEmri();
            case 3:
                return p.getMbiemri();
            case 4:
                return p.getEmail();
            case 5:
                return p.getQyteti();
            case 6:
                return p.getAdresa();




            default:
                return null;
        }
    }
}

1 Ответ

0 голосов
/ 17 мая 2019

Прежде всего решите, какими будут ваши столбцы.Вы, кажется, запутались, какими должны быть эти столбцы, когда у некоторых сотрудников более одного телефона.Непонятно, в чем ваша проблема, но, вероятно, просто нарисовав ее на листе бумаги, вы уже очистите свой разум.

Решите также, будут ли эти столбцы фиксированными или динамическими (т.е. возможно ли получить больше столбцов для некоторых сотрудников, которые вам нужно будет добавить в вашу таблицу?)

ВторойСоздайте отдельную структуру данных, давайте назовем этот класс EmployeeData, который собирает необходимую вам информацию.Сделайте это отдельно от PunetoriTableModel.Заполните это из ваших хранилищ данных.Внутри этого помещается необходимая логика, которая решает, какой телефон использовать, или какую-либо собственную бизнес-логику, которая вам нужна.

Заставьте EmployeeData предоставить несколько открытых методов, таких как getColumns(), getRowCount() и getRow(int i) и т. Д.

В конструкторе вашего PunetoriTableModel просто передайте EmployeeDataи внутри соответствующих методов вызывайте EmployeeData.Таким образом, табличная модель воспринимает данные как таблицу, и у вас есть собственная логика, которая объединяет их из разных таблиц в отдельную.

...