www.pudn.com > tame.rar > JRadioButtonTableExample2.java


/* (swing1.1.1) */
package tame.examples;

import java.awt.Component;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;

/**
@author Nobuo Tamemasa
@version 1.2 08/13/99
*/
public class JRadioButtonTableExample2 extends JFrame {

  public JRadioButtonTableExample2(){
    super( "JRadioButtonTable Example" );

    DefaultTableModel dm = new DefaultTableModel();
    dm.setDataVector(
      new Object[][]{
        {"1",new Integer(-1)},
        {"2",new Integer(-1)},
        {"3",new Integer(0)},
        {"4",new Integer(1)},
        {"5",new Integer(2)}},
      new Object[]{"Question","Answer"});

    JTable table = new JTable(dm);
    String[] answer = {"A","B","C"};

    table.getColumn("Answer").setCellRenderer(
      new RadioButtonRenderer(answer)
    );
    table.getColumn("Answer").setCellEditor(
      new RadioButtonEditor(new JCheckBox(),
                            new RadioButtonPanel(answer))
    );
    JScrollPane scroll = new JScrollPane(table);
    getContentPane().add( scroll );
  }

  // Cell base
  class RadioButtonPanel extends JPanel {
    JRadioButton[] buttons;

    RadioButtonPanel(String[] str) {
      setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
      buttons = new JRadioButton[str.length];
      for (int i=0; i