RT 给点建议,我直接在TabelModel的data中new JRadionButton 显示出来是字符串.
贴上原码大家看看:
package yang.gan;import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;class MyTableModel2 extends AbstractTableModel {
/**
 * 
 */ private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 2L; private String[] columnNames = { "默认语言", "语言编号", "语言名称" }; Object[][] data2 = {}; public int getColumnCount() {
return columnNames.length;
} public int getRowCount() {
return data2.length;
} public String getColumnName(int col) {
return columnNames[col];
} public Object getValueAt(int row, int col) {
return data2[row][col];
} public boolean isCellEditable(int row, int col) {
if (col < 0) {
return false;
} else {
return true;
}
} public void setValueAt(Object value, int row, int col) {
data2[row][col] = value;
fireTableCellUpdated(row, col);
}
}public class Frame2 extends JFrame { /**
 * 
 */
// public static void main(String[] args) {
// new Frame2();
// } private static final long serialVersionUID = 1L; public Frame2() {
super();
// logger.info("new frame");
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
initialize();
} private JPanel jContentPane = null; public JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.gridy = 1;
c.weightx = 0.1;
c.weighty = 0.1;
c.gridx = 0;
jContentPane.add(getJButton1(), c);
c.gridy = 0;
c.weightx = 1.0;
c.weighty = 1.0;
c.gridx = 0;
jContentPane.add(tableview, c);

}
return jContentPane;
} private void initialize() {
this.setSize(624, 338);
this.setContentPane(getJContentPane());
this.setTitle("语言表");
} private JTable jTable = getJTable(new MyTableModel2()); private JTable getJTable(MyTableModel2 model) { if (jTable == null) {
model.data2 = getData();
jTable = new JTable(model);
} return jTable;
} private JButton button1 = null; private JButton getJButton1() {
button1 = new JButton("保存");
button1.addActionListener(commit);
return button1;
} JScrollPane tableview = new JScrollPane(jTable); private Commit commit = new Commit(); public Object[][] getData() {
Object[][] data = new Object[34][3];
for (int j = 0; j < new GetLanguages().get1().length; j++) {
// data[j][0] = new GetLanguages().get1()[j];
data[j][0] = new JRadioButton();
}
for (int j = 0; j < new GetLanguages().get1().length; j++) {
data[j][1] = new GetLanguages().get2()[j];
}
for (int j = 0; j < new GetLanguages().get1().length; j++) {
data[j][2] = new GetLanguages().get()[j];
}
return data;
} class Commit implements ActionListener { public void actionPerformed(ActionEvent e) {
new StopEditing().stop(jTable);
// jTable.setModel(dataModel);
new Delete().set("languages");
for (int i = 0; i < jTable.getModel().getRowCount(); i++) {
String a = (String)jTable.getModel().getValueAt(i, 0);
String b = (String)jTable.getModel().getValueAt(i, 1);
String c = (String)jTable.getModel().getValueAt(i, 2);
Insert2 in = new Insert2();
// System.out.println(a);
if(a!=null&&!a.equals("")){
int a1 = Integer.parseInt((String) a);
in.set(a1, b, c);
}
}
javax.swing.JOptionPane.showMessageDialog(null, "操作成功");
}
}
}

解决方案 »

  1.   

    显示JRadionButton那一列的类型不对吧
    把类型改一下试试 
    Class[] type = {
            JRadionButton.class, String.class, String.class};设置一下
      

  2.   

    看了下API TableCellRenderer 好象可以解决我的问题,但是怎么用呢,没看明白这个接口怎么用.哪位大大来教一下
      

  3.   

    现在问题变成在JTable中添加可视化组件的问题.
      

  4.   

    顶一下,大大们帮忙看看啊,怎么在JTable中添加可视化组件.