当我尝试将数据库表添加到表单时,如何解决包含的错误?

问题描述 投票:0回答:1

我已经设置了我的类来显示我的数据库数据,就像 SQLExplorer 中的示例一样,当我构建应用程序时,当我尝试使用 bC.add(BorderLayout 将表添加到容器的中心窗格时,我收到错误.中心,桌子);添加表格。我得到的错误是“找不到适合 add(java.lang.String,com.codename1.ui.table.TableModel) 的方法”。 有人在学习这门课时遇到过同样的错误吗?我在互联网上找不到任何信息。谢谢。

编辑1 我已经成功创建了一个单独的屏幕类来将记录添加到数据库,因此我删除了此类中 SQLExample 类的“选择范围”逻辑的层。由于我需要查看所有记录,因此我按照原始顺序保留了逻辑构建中的剩余代码。 尚未完成: 我需要删除未使用的导入,并且需要在退出之前添加数据库和游标清理。 这是我的代码:

public class Roster {

    Form rstr = new Form("Players", new BorderLayout());
    private final int counter = 1;
    Database db;
    Cursor cur;
    Container bC;
    Container leftPanel = new Container(new BoxLayout(Y_AXIS));
    String query = new String("Select * from players");

    public Roster() throws IOException {

        db = Display.getInstance().openOrCreate("players.db");
        cur = db.executeQuery(query);

        
        int columns = cur.getColumnCount();

        if(columns > 0) {
            boolean next = cur.next();
            if(next) {
                ArrayList<String[]> data = new ArrayList<>();
                String[] columnNames = new String[columns];
                for(int iter = 0 ; iter < columns ; iter++) {
                    columnNames[iter] = cur.getColumnName(iter);
                }
                while(next) {
                    Row currentRow = cur.getRow();
                    String[] currentRowArray = new String[columns];
                    for(int iter = 0 ; iter < columns ; iter++) {
                        currentRowArray[iter] = currentRow.getString(iter);
                    }
                    data.add(currentRowArray);
                    next = cur.next();
                }
                Object[][] arr = new Object[data.size()][];
                data.toArray(arr);
                TableModel table = new DefaultTableModel(columnNames, arr);

              rstr.add(BorderLayout.CENTER, table);
            }
        }
        rstr.show();
    }
//            Util.cleanup(db);
//            Util.cleanup(cur);
} 
codenameone
1个回答
0
投票

您要添加

TableModel
实例而不是
Table
实例。这将是正确的代码:

TableModel model = new DefaultTableModel(columnNames, arr);
Table table = new Table(model);
rstr.add(BorderLayout.CENTER, table);

Codename One 使用 MVC(模型、视图、控制器)设计模式的一种形式。 MVC 将模型与视图分离,模型包含表的数据,但不能将数据直接添加到 UI...如果你想用红色绘制负数,用户界面如何知道这样做?

如果您想处理数据点击,数据如何知道如何处理或验证错误的用户输入?

Table
类代表允许您呈现和修改数据的视图和控制器。请注意,它包装了模型,该模型是数据的“干净”表示。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.