🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.swing
Article #1565

create a radiobuttongroup in a jdbtable

#1565
From: William Tham
Date: Sat, 11 Oct 2003 11:24
214 lines
6463 bytes
i try to create a radiobuttongroup in a jdbtable. (look at the code at
bottom)
i have done it in jtable. i use setCellEditor to draw the radiobutton, but i
cann't do it using jdbtable.




=================
this is the source code...:
=================
     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"});

/*
*         JdbTable table = new JdbTable(dm) { // why always fail ???
*/
         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();
       }
     }
Technical Details
Message-ID: <3f87e9db@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 111d45,f1ffd1a128ea118,start
X-Google-Attributes: gid111d45,public
X-Google-ArrivalTime: 2003-10-11 04:38:57 PST
From: "William Tham" <williamtham@telkom.net>
Newsgroups: borland.public.jbuilder.java.swing
Subject: create a radiobuttongroup in a jdbtable
Date: Sat, 11 Oct 2003 19:24:12 +0800
Lines: 221
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
NNTP-Posting-Host: 61.94.168.174
Message-ID: <3f87e9db@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1065871835 61.94.168.174 (11 Oct 2003 04:30:35 -0700)
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail