Java 如何在运行时添加JRadio按钮

Java 如何在运行时添加JRadio按钮,java,swing,jtable,jradiobutton,Java,Swing,Jtable,Jradiobutton,我正在使用Netbeans 7.1和MySQL。 我需要在jtable中包含jradiobutton的1列,用户可以选择任意1行的jradiobutton 详情请参考图。选择RB后,将对jbutton click事件进行进一步处理 这是密码- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { fin

我正在使用Netbeans 7.1和MySQL。 我需要在jtable中包含jradiobutton的1列,用户可以选择任意1行的jradiobutton 详情请参考图。选择RB后,将对jbutton click事件进行进一步处理

这是密码-

    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();
        }
    }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
最终对象[]columnNames=新字符串[]{“日期”、“航班名称”、“起飞时间”、“BC座位可用”、“XC座位可用”、“EC座位可用”};
DefaultTableModel dtm=新的DefaultTableModel(columnNames,0);
字符串原点=jcombox3.getSelectedItem().toString();
String target=jcombox4.getSelectedItem().toString();
字符串fclass=jcombox1.getSelectedItem().toString();
字符串搜索=”;
日期dt;
//经济舱处理
尝试
{
smt=con.createStatement(ResultSet.TYPE\u SCROLL\u-SENSITIVE,ResultSet.CONCUR\u-update);
rs=smt.executeQuery(sql);
int i=0;
SimpleDataFormat sdf=新的SimpleDataFormat(“dd-MM-yyyy”);
布尔空=真;
字符串var1=“”,var2=“”,var3=“”,var4=“”,var5=“”;
while(rs.next())
{
空=假;
var1=rs.getString(1);
strdtver1=(字符串)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);
addRow(newvector());
dtm.setValueAt(标准偏差1,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(空)
{
addRow(newvector());
strdtver2=(字符串)sdf.format(jDateChooser1.getDate());
dtm.setValueAt(标准偏差2,i,0);
dtm.setValueAt(“无航班”,i,1);
dtm.setValueAt(“无航班”,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);
//删除列表=列;
//删除。添加(col);
m、 移除柱(col);
m、 移除柱(col1);
}
捕获(例外情况除外)
{
System.out.println(例如getMessage());
例如printStackTrace();
}
}
我只想添加JRadioButton,用户可以选择任意一行JRadioButton


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

我们考虑了几种备选方案,但您可能希望看到@Guillaume Polet所示的方案。它使用
PropertyChangeEvent
强制执行每行一次选择属性。

您发布了半吨代码,其中99%与您的问题无关。请不要让我们的志愿者帮助变得如此困难。请考虑努力创建一个我们不需要的解决方案。解决方案是改变JTABLE的TabLeMod,给它另一个保持布尔值的列,但是不要要求我尝试操纵你的代码来告诉你如何做到这一点。直到代码被清理和删减。非常抱歉代码太长,事实上,我从过去5-6个小时开始尝试添加JRadiobutton,现在我感到很沮丧。我删去了代码,只在邮件中提交了表格部分。
“现在我可以期待一些帮助了”
——请理解我们是志愿者。希望你能得到帮助,通常问题越好,你的机会就越大。至于我,我正在等待你阅读我在第一条评论中提供的链接,然后等待你的SSCCE。我可以在JTable中获取JRadioButton,但即使我的SQL查询返回超过1条记录,我也只能获取1条记录。我只需要1个帮助如何更改这段代码中变量的值,因为它在while(rs.next)中,用于从rs获取数据。因此,所有变量都被下一个数据覆盖,并且只有最后一个数据显示在
jTable1.setModel(dtm)中-
dtm.setDataVector(新对象[]{{strdtver1,var1,var5,var2,var3,var4,新JRadioButton(“A”)},新对象[]{“字符串”,“字符串”,“字符串”,“字符串”,“字符串”,“字符串”,“选择”})
我希望您的
表格模型
使用
Boolean.class
,如引用的示例所示。请更新您的问题,以包含一个显示您遇到的任何问题的。@垃圾桶,请您提供一些代码片段,我没有得到您的建议。最近的这篇文章比较了两个默认渲染器和一个自定义渲染器。后者由列指定;前者是按类型选择的。