【问题标题】:How to add JRadio Button at run time如何在运行时添加单选按钮
【发布时间】:2013-06-12 19:38:33
【问题描述】:

我正在使用 Netbeans 7.1 和 MySQL。 我需要 jtable 中的 1 列,其中将包含 jradiobutton 并且用户可以选择任何 1 行的 jradiobutton 详情请看图。选择 RB 后,将对 jbutton 点击​​事件进行进一步处理。

这里是代码-

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        final Object[] columnNames=new String[] {"Date","Flight Name","Departure Time","BC Seats Available","XC Seats Available","EC Seats Available"};
        DefaultTableModel dtm=new DefaultTableModel(columnNames,0);        
        String origin=jComboBox3.getSelectedItem().toString();
        String target=jComboBox4.getSelectedItem().toString();
        String fclass=jComboBox1.getSelectedItem().toString();
        String search = "";
        Date dt;
        
        //Economy Class Processing
        
        try
        {
           smt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
           rs = smt.executeQuery(sql);
           int i = 0;
           SimpleDateFormat sdf= new SimpleDateFormat("dd-MM-yyyy");
           boolean empty=true;
           String var1="", var2="", var3="", var4="", var5="";
           while(rs.next())
           {
               empty=false;
               var1=rs.getString(1);
               strdtver1=(String) sdf.format(rs.getDate(2));
               var2=Integer.toString(rs.getInt(3));
               var3=Integer.toString(rs.getInt(4));
               var4=Integer.toString(rs.getInt(5));
               var5=rs.getString(6);
               dtm.addRow(new Vector());
               dtm.setValueAt(strdtver1, i, 0);
               dtm.setValueAt(var1, i, 1);
               dtm.setValueAt(var5, i, 2);
               dtm.setValueAt(var2, i, 3);
               dtm.setValueAt(var3, i, 4);
               dtm.setValueAt(var4, i, 5);
               i++;
               
           }
           if(empty)
           {
               dtm.addRow(new Vector());
               strdtver2=(String) sdf.format(jDateChooser1.getDate());
               dtm.setValueAt(strdtver2, i, 0);
               dtm.setValueAt("No Flights", i, 1);
               dtm.setValueAt("No Flights", i, 2);
               dtm.setValueAt("0", i, 3);
               dtm.setValueAt("0", i, 4);
               dtm.setValueAt("0", i, 5);
           }
           jTable1.setModel(dtm);
           TableColumnModel m=jTable1.getColumnModel();
           TableColumn col=m.getColumn(3);
           TableColumn col1=m.getColumn(4);
           //List<TableColumn> removed=col;
           //removed.add(col);
           m.removeColumn(col);
           m.removeColumn(col1);
        }
        catch(Exception ex)
        {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }

我只是想添加 JRadioButton 并且用户可以选择任何 1 行 JRadioButton,

提前感谢大家的任何建议和指导

【问题讨论】:

  • 您发布了半吨代码,其中 99% 与您的问题无关。请不要让我们的志愿者帮助变得如此困难。请考虑努力创建一个sscce,这样我们就不必这样做了。
  • 解决方案是更改 JTable 的 TableModel,为其提供另一个保存布尔值的列,但不要让我尝试操纵您的代码来向您展示如何完成,直到代码已被清理和精简。
  • 对于长代码非常抱歉实际上我在过去 5-6 小时以来一直在尝试添加 JRadiobutton,现在我感到很沮丧。我削减了我的代码,只有表格部分在帖子中提交。
  • "Now can I expect some help" -- 请理解我们是志愿者。希望你能得到帮助,通常问题越好,你的机会就越大。至于我,我正在等待您阅读我在第一条评论中提供的链接,然后阅读您的 SSCCE。

标签: java swing jtable jradiobutton


【解决方案1】:

考虑了几种替代方案here,但由于@Guillaume Polet 显示here,您可能想要一个。它使用PropertyChangeEvent 来强制执行每行单选属性。

【讨论】:

  • 我能够在 JTable 中获取 JRadioButton,但即使我的 SQL 查询返回超过 1 条记录,我也只能获得 1 条记录。我只需要 1 个帮助如何在这段代码中更改变量的值,因为它在 while(rs.next) 内部,用于从 rs 获取数据。所以这所有变量都被下一个数据覆盖,只有最后一个数据显示在jTable1.setModel(dtm); - dtm.setDataVector(new Object[][]{ {strdtver1,var1,var5,var2,var3,var4,new JRadioButton("A")}}, new Object[]{"String","String","String","String","String","String","Select"});
  • 我希望您的TableModel 使用Boolean.class,如引用的示例所示。请更新您的问题以包含一个sscce,以展示您遇到的任何问题。
  • @trashgod 请给我一些代码 sn-p 我没有得到你的建议。
  • 最近的example 将两个默认渲染器与自定义渲染器进行了比较。后者由列指定;前者是按类型选择的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 2013-10-27
相关资源
最近更新 更多