hi here it is .,


http://codeguru.earthweb.com/java/articles/665.shtml


It has multiple radio buttons in a button group for a cell. I have used Cell
Renderer and Cell Editor for the table.

To make it simple I have it based on the one already in Codeguru.com that
explains how to use radio buttons as cell editor and renderer.


JButtonGroupTableExample.java

     // File: JButtonGroupTableExample.java
     /* (swing1.1beta3) */
     file://package jp.gr.java_conf.tame.swing.examples;

     /**
      * @version 1.0 12/03/98
      */

     import java.awt.*;
     import java.awt.event.*;
     import javax.swing.*;
     import javax.swing.table.*;
     import javax.swing.event.*;

     public class JButtonGroupTableExample extends JFrame
     {




       public JButtonGroupTableExample()
       {
         super( "JButtonGroupTable Example " );
         UIDefaults ui = UIManager.getLookAndFeel().getDefaults();
         UIManager.put("RadioButton.focus", ui.getColor("control"));




         DefaultTableModel dm = new DefaultTableModel();
         dm.setDataVector(
           new Object[][]{
             {"Do you like dogs?","5"},
             {"Do you like cats?","4"},
             {"Do you like Windows?","1"},
             {"Do you like Java?","5"},
             {"Do you like Swing?","4"}},
           new Object[]{"Questions","Answers"});

         JTable table = new JTable(dm) {
           public void tableChanged(TableModelEvent e) {
             super.tableChanged(e);
             repaint();
           }
         };

         table.getColumn("Answers").setCellRenderer(new
RadioButtonRenderer());
         table.setRowHeight(30);
    table.getColumn("Answers").setCellEditor(new RadioButtonEditor(new
JCheckBox()));
         JScrollPane scroll = new JScrollPane(table);
         getContentPane().add( scroll );
         setSize( 1000, 200 );
         setVisible(true);
       }



       public static void main(String[] args) {
         JButtonGroupTableExample frame = new JButtonGroupTableExample();
         frame.addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
             System.exit(0);
           }
         });
       }
     }

     class RadioButtonRenderer implements TableCellRenderer {
  public JPanel pnl = new JPanel();
  public ButtonGroup group1 = new ButtonGroup();
  public JRadioButton btnFive = new JRadioButton("Very Very Much");
  public JRadioButton btnFour = new JRadioButton("Very Much");
  public JRadioButton btnThree = new JRadioButton("Okay");
  public JRadioButton btnTwo = new JRadioButton("Not Much");
       public JRadioButton btnOne = new JRadioButton("Hate it");

       public Component getTableCellRendererComponent(JTable table, Object
value,
                        boolean isSelected, boolean hasFocus, int row, int
column) {
         if (value==null) return null;

          group1.add(btnFive );
   group1.add(btnFour );
  group1.add(btnThree );
   group1.add(btnTwo );
  group1.add(btnOne );


  pnl.add(btnFive );
   pnl.add(btnFour );
  pnl.add(btnThree );
   pnl.add(btnTwo );
  pnl.add(btnOne );


   btnOne.setSelected(false);
 btnTwo .setSelected(false);
 btnThree .setSelected(false);
 btnFour .setSelected(false);
 btnFive .setSelected(false);
 switch(Integer.parseInt((String)value))
 {


  case 1:
     btnOne.setSelected(true);
     break;
  case 2:
     btnTwo.setSelected(true);
     break;
  case 3:
     btnThree.setSelected(true);
     break;
  case 4:
     btnFour.setSelected(true);
     break;
  case 5:
     btnFive.setSelected(true);
     break;
 }



         return pnl;
       }
     }

     class RadioButtonEditor extends    DefaultCellEditor
                             implements ItemListener {
 public JPanel pnl = new JPanel();
  public ButtonGroup group1 = new ButtonGroup();
  public JRadioButton btnFive = new JRadioButton("Very Very Much");
  public JRadioButton btnFour = new JRadioButton("Very Much");
  public JRadioButton btnThree = new JRadioButton("Okay");
  public JRadioButton btnTwo = new JRadioButton("Not Much");
       public JRadioButton btnOne = new JRadioButton("Hate it");

       public RadioButtonEditor(JCheckBox checkBox) {
         super(checkBox);
       }

       public Component getTableCellEditorComponent(JTable table, Object
value,
                        boolean isSelected, int row, int column) {
         if (value==null) return null;

  group1.add(btnFive );
   group1.add(btnFour );
  group1.add(btnThree );
   group1.add(btnTwo );
  group1.add(btnOne );


  pnl.add(btnFive );
   pnl.add(btnFour );
  pnl.add(btnThree );
   pnl.add(btnTwo );
  pnl.add(btnOne );


  btnOne.setSelected(false);
  btnTwo .setSelected(false);
  btnThree .setSelected(false);
  btnFour .setSelected(false);
  btnFive .setSelected(false);

 switch(Integer.parseInt((String)value)) {


  case 1:
     btnOne.setSelected(true);
     break;
  case 2:
     btnTwo.setSelected(true);
     break;
  case 3:
     btnThree.setSelected(true);
     break;
  case 4:
     btnFour.setSelected(true);
     break;
  case 5:
     btnFive.setSelected(true);
     break;
 }



         return pnl;
       }

       public Object getCellEditorValue() {
         if(btnFive.isSelected() == true)
  return "5";
    if(btnFour.isSelected() == true)
  return "4";

         if(btnThree.isSelected() == true)
  return "3";

         if(btnTwo.isSelected() == true)
  return "2";

         if(btnOne.isSelected() == true)
  return "1";
 return "";

       }

       public void itemStateChanged(ItemEvent e) {
         super.fireEditingStopped();
       }
     }

panyam krishna murthy
software engineer


----- Original Message -----
From: Dr. Muhammad Masroor Ali <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, March 27, 2001 12:36 PM
Subject: Radio button in JTable


Hello all, could please direct me to some code snippet and/or guide
which helps me putting radio buttons in a JTable. Tutorial from Sun is
not very elaborate on cell renderers.

Thanks in advance,

--
Dr. Muhammad Masroor Ali
Associate Professor, Department of CSE
BUET, Dhaka-1000, Bangladesh

Consultant, n.:
    Someone who'd rather climb a tree and tell a lie than stand
    on the ground and tell the truth.
_______________________________________________
Advanced-swing mailing list
[EMAIL PROTECTED]
http://eos.dk/mailman/listinfo/advanced-swing

_______________________________________________
Advanced-swing mailing list
[EMAIL PROTECTED]
http://eos.dk/mailman/listinfo/advanced-swing

Reply via email to