Java 在模型上使用JTable的MVC
我正试图在MVC中构建一个使用数据库的swing应用程序,但当我决定在我的模型(也是defaulttablemodel)上放置一个jtable以尊重MVC范式时,当窗口启动时,我的jtable是空的,现在它不工作了,这是我的模型:Java 在模型上使用JTable的MVC,java,database,swing,model-view-controller,Java,Database,Swing,Model View Controller,我正试图在MVC中构建一个使用数据库的swing应用程序,但当我决定在我的模型(也是defaulttablemodel)上放置一个jtable以尊重MVC范式时,当窗口启动时,我的jtable是空的,现在它不工作了,这是我的模型: public class Model { private JTable jTable1; private DefaultTableModel modelTab; private Database db; public Model() { this.db =
public class Model {
private JTable jTable1;
private DefaultTableModel modelTab;
private Database db;
public Model() {
this.db = new Database();
jTable1 = new JTable();
modelTab = new DefaultTableModel();
}
控制器:
public void updateJTable(){
JTable jTable1 = new JTable();
DefaultTableModel modelTab = new DefaultTableModel();
modelTab.addColumn("id");
modelTab.addColumn("Désignation");
modelTab.addColumn("Description");
Database db = model.getDb();
ResultSet rs = db.SelectFromTableRS("id_designation, intitule_designation, desc_designation", "DESIGNATION");
String id = "", i = "", d = "";
while(true)
{
try {
if (!rs.next()) break;
id = rs.getString("id_designation");
i = rs.getString("intitule_designation");
d = rs.getString("desc_designation");
} catch (SQLException e1) {
e1.printStackTrace();
}
modelTab.addRow(new Object[]{id, i, d});
}
model.setModelTab(modelTab);
model.setjTable1(jTable1);
}
视图:
JPanel generalPano = new JPanel(new BorderLayout());
JPanel centerPan = new JPanel();
centerPan.add(new JScrollPane(model.getjTable1(),
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
generalPano.add(new JScrollPane(model.getjTable1()), BorderLayout.CENTER);
setContentPane(generalPano);
事实上,我只知道视图以一个空jtable开始,但正如您在我的controlGroup中看到的,它看起来很好:
public class ControlGroup {
private Model model;
private Vue vue;
public ControlButton controlButton;
public ControlText controlText;
public ControlData controlData;
public ControlMouse controlMouse;
public ControlGroup(Model model) {
this.model = model;
vue = new Vue(model);
controlData = new ControlData(model,vue);
controlButton = new ControlButton(model,vue);
controlText = new ControlText(model,vue);
controlMouse = new ControlMouse(model, vue);
vue.display();
}
JTable属于视图(可能是Vue)。控制器设置其表格模型。从数据库加载新的表模型只需在最后执行jTable.setModel 表格可以创建和布局一次
因此,无需总是创建一个新表并在GUI中替换它。但是出现了一些问题。。。这不是我们可以帮助的。请阅读并相应增强您的问题。JTable属于视图(可能是Vue)。控制器设置其表格模型。从数据库加载新的表模型只需在最后执行jTable.setModel。表格可以创建和布局一次。是的,谢谢Joop Eggen,现在工作得很好。“是的,谢谢Joop Eggen…”提示:添加@JoopEggen(或任何人,
@
很重要)以通知此人新的评论。乔普:你能把它升级成一个答案吗?