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