Java 如何在运行时添加JRadio按钮
我正在使用Netbeans 7.1和MySQL。 我需要在jtable中包含jradiobutton的1列,用户可以选择任意1行的jradiobutton 详情请参考图。选择RB后,将对jbutton click事件进行进一步处理 这是密码-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
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
,如引用的示例所示。请更新您的问题,以包含一个显示您遇到的任何问题的。@垃圾桶,请您提供一些代码片段,我没有得到您的建议。最近的这篇文章比较了两个默认渲染器和一个自定义渲染器。后者由列指定;前者是按类型选择的。