我已经设置了我的类来显示我的数据库数据,就像 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);
}
您要添加
TableModel
实例而不是 Table
实例。这将是正确的代码:
TableModel model = new DefaultTableModel(columnNames, arr);
Table table = new Table(model);
rstr.add(BorderLayout.CENTER, table);
Codename One 使用 MVC(模型、视图、控制器)设计模式的一种形式。 MVC 将模型与视图分离,模型包含表的数据,但不能将数据直接添加到 UI...如果你想用红色绘制负数,用户界面如何知道这样做?
如果您想处理数据点击,数据如何知道如何处理或验证错误的用户输入?
Table
类代表允许您呈现和修改数据的视图和控制器。请注意,它包装了模型,该模型是数据的“干净”表示。