【问题标题】:CheckBox Listener复选框监听器
【发布时间】:2011-11-22 19:23:47
【问题描述】:

我有一些由我的数据库表名组成的复选框

if(event.getSource()==connect){
    CheckBox check;
    Connection connection = null;
    try {
        Class.forName("org.postgresql.Driver");
        String url = "jdbc:postgresql://localhost:5432/db";
        String username = "username";
        String password = "password";
        connection = DriverManager.getConnection(url, username, password);
        
        // Gets the metadata of the database
        DatabaseMetaData dbmd = connection.getMetaData();
        String[] types = {"TABLE"};
        
        ResultSet rs = dbmd.getTables(null, null, "%", types);
        while (rs.next()) {

            String tableCatalog = rs.getString(1);
            String tableSchema = rs.getString(2);
            String tableName = rs.getString(3);
            check = new CheckBox(tableName);
            Tables.addComponent(check);
        }
    } catch (SQLException e) {
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Tables.addComponent(generate);
}

现在假设我有 10 个复选框(具有不同的名称)。我怎么知道哪些被检查了?

例如我选中 nr 1.5.7 并单击“打印”按钮。如何打印出来?

System.out.println("Checked items : " +check);?

【问题讨论】:

    标签: java sql checkbox


    【解决方案1】:

    您需要一个像 Map 这样的数据结构来映射您的复选框和表格...我通常使用 SWT,并且您在每个 GUI 组件中都有一个映射来存储您想要的任何内容,但据我所知,您在awt中没有这个,所以你需要手动做这个......(我假设你正在使用awt,虽然awt中的CheckBox类实际上是Checkbox而不是CheckBox!!!) 底线是,您需要将一些数据绑定到您的 GUI 组件,以便稍后在代码中识别它们...... 我会使用地图:

    Map<Checkbox, String> checkToTableId;
    Map<String, Checkbox> tableIdToCheck;
    

    并在创建检查时构建它们...

    【讨论】:

      【解决方案2】:

      使用CheckboxGroup。

      CheckboxGroup cbg=new CheckboxGroup();
      

      如下添加CheckboxGroup:

      while (rs.next()) {
         String tableCatalog = rs.getString(1);
         String tableSchema = rs.getString(2);
         String tableName = rs.getString(3);
         Tables.addComponent(new Checkbox(tableName,cbg,false););
      }
      

      然后你得到选择的值。

      String value = cbg.getSelectedCheckbox().getLabel();
      

      【讨论】:

      • 如果我有 10 个复选框并且如果我知道他们的名字但我不知道,那么数据库可以包含 20 个表或 3 个表,除了这些复选框是自动生成的(而 rs.next(){ "制作复选框"})
      • 它可能会工作,但因为我使用 vaadin 生病必须寻找 vaadin 方法,谢谢答案帮助了我很多
      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 2021-08-09
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多