java - 如何将 2 个不同表中的数据连接到单个 JTable 中

标签 java swing join jtable tablemodel

我正在为员工管理系统制作一个程序。现在我正在为员工注册制作CRUD表单,我将数据层、业务逻辑和gui中的src代码分开。在gui中,我将gui View 和gui模型分开,在Gui模型我创建了一个EmployeeTableModel,来指定如何显示员工表的数据,但在该表中我得到了来自多个表的数据,一个是数据库中的员工表,另一个是电话..我已经成功获得员工表中的数据,我可以将这些数据放入数据库中的员工表和电话表中,但我无法将它们放入TableModel中,我只能从员工中获取数据。

PHOTO OF THE TABLE

ALL SOURCE CODE HERE - GIT

我尝试更改 EmployeeTableModel 中的代码以接受更多列,并找到一种从电话表添加数据的方法,但没有成功,因为每个员工都有 2 -3 个电话号码,并且 Employee_ID 被指定为外来号码电话表上的键..正如我所说,每个员工都有 3 部电话,当我们指定要获取哪部电话时,它依赖于电话表中的外键 employee_id。

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;
        }
    }
}

最佳答案

首先决定您的专栏是什么。当某些员工拥有不止一部电话时,您似乎对这些列应该是什么感到困惑。目前还不清楚你的问题是什么,但可能只是把它画在一张纸上就已经让你头脑清醒了。

还决定这些列是固定的还是动态的(即是否可以为某些员工获取更多列,您需要将其添加到表中?)

其次,创建一个单独的数据结构,让我们调用这个类EmployeeData,它捕获您想要的信息。使其与 PunetoriTableModel 分开。从您的数据存储库填充此内容。 其中包含决定使用哪部手机的必要逻辑,或者您需要的任何自定义业务逻辑。

使EmployeeData提供一些公共(public)方法,例如getColumns()getRowCount()getRow(int i) 等等

PunetoriTableModel 的构造函数中,只需传递 EmployeeData 并在相应的方法中调用 EmployeeData 方法。这样,表模型将数据视为一张表,并且您可以使用自定义逻辑将不同表中的数据组合成一个单独的表。

关于java - 如何将 2 个不同表中的数据连接到单个 JTable 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182602/

相关文章:

java - 解码 .do URL 请求唯一 ID

java - Spring Boot 找不到 IntelliJ

java - 为什么编译器拒绝访问 lambda 中的非最终变量

java - 使用 AbstractTableModel 获取 JTable 中的选定行

java - 如何在俄罗斯方 block 游戏中保留底部的矩形?

python - 用街道号码和字母 python 分隔街道名称字符串

java - 在 Android 中使用 JSON 解析图像 url 和日期

java - 如何让 java swing 组合框显示数组中的列而不是它正在显示的内容?

mysql - 如何使 "distinct"加入 MySQL

sql - 如果 LEFT JOIN 表记录数大于 1,则排除行