我想用swing创建自定义组件。另外我想连接数据库到那些组件。摆动自定义组件
我想要做什么,
我想创建一个自定义JComboBox
。该组合框名称是仓库。数据库中的所有仓库都应绑定到该组合框。
当我设计一个表单时,我可以使用该组合框作为仓库。当我运行程序时,所有仓库都会自动加载到组合中。因为该组合具有加载仓库的内部机制。 (我怎么写那个东西?)
我该怎么做?
我想用swing创建自定义组件。另外我想连接数据库到那些组件。摆动自定义组件
我想要做什么,
我想创建一个自定义JComboBox
。该组合框名称是仓库。数据库中的所有仓库都应绑定到该组合框。
当我设计一个表单时,我可以使用该组合框作为仓库。当我运行程序时,所有仓库都会自动加载到组合中。因为该组合具有加载仓库的内部机制。 (我怎么写那个东西?)
我该怎么做?
我已经做了一个类似的事情与SQL数据库的工作。 使用需要使用ResultSet接口运行查询的数据库以及Statement类来创建语句。
public void makeCombo() throws SQLException{
public JComboBox warehouse = new JComboBox();
try{
Connection conn = Connect.getConnection();
String query = "Select ?? FROM ??";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
if (rs!=null){
while (rs.next()){
String name = rs.getString(1);
warehouse.addItem(name);
}
}
else{
System.err.println ("Empty combo");
warehouse.addItem("Empty Combo");
}
}
catch(Exception e){
e.printStackTrace();
}
}
这应该使用查询结果填充仓库组合。
此示例在EDT上执行数据库查询,或访问工作者上的Swing组件线。他们都不是一个好主意 – Robin
我觉得这是一个很好的学习起点。但是,我明白你的意思。只是分享我的经验。 – Nosheen
我认为这对成功我的目标会更好。谢谢 – mtchinthaka
通过不使用自定义的JComboBox而是使用实用工厂方法通过使用JComboBox的可用API来自定义它来构造这样的组合框(或其模型)。另请注意,数据库连接和Swing组件不应该组合在同一个线程中(请参见[并发性](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)教程) – Robin
Focus关于Swing组件的模型容量。您不需要自定义组件,因为您需要自定义模型。您可能还想看看[JGoodies Bindings](http://www.jgoodies.com/freeware/libraries/binding/)API – MadProgrammer