Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Java SE 综合讨论区
打印话题 寄给朋友 订阅主题 |
作者 | 请帮我看看这个!!(JRadioButton Table 怎么获得用户点击选择) |
jimmywin
发贴: 46 积分: 1 |
于 2003-05-27 19:34
这段代码是把一组 JRadioButton 放到 Table 里,请问我怎么获得用户点击选择是哪些项?谢谢! /* (swing1.1.1) */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.event.*; /** * @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(3)}, {"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 = {"单行文本","多行文本","日期","字典关联"}; table.setRowHeight(20); 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<buttons.length; i++) { buttons[i] = new JRadioButton(str[i]); buttons[i].setFocusPainted(false); add(buttons[i]); } } public void setSelectedIndex(int index) { for (int i=0;i<buttons.length;i++) { buttons[i].setSelected(i == index); } } public int getSelectedIndex() { for (int i=0; i<buttons.length; i++) { if (buttons[i].isSelected()) { return i; } } return -1; } public JRadioButton[] getButtons() { return buttons; } } class RadioButtonRenderer extends RadioButtonPanel implements TableCellRenderer { RadioButtonRenderer(String[] strs) { super(strs); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof Integer) { setSelectedIndex(((Integer)value).intValue()); } return this; } } class RadioButtonEditor extends DefaultCellEditor implements ItemListener { RadioButtonPanel panel; public RadioButtonEditor(JCheckBox checkBox,RadioButtonPanel panel) { super(checkBox); this.panel = panel; ButtonGroup buttonGroup = new ButtonGroup(); JRadioButton[] buttons = panel.getButtons(); for (int i=0; i<buttons.length; i++) { buttonGroup.add(buttons[i]); buttons[i].addItemListener(this); } } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (value instanceof Integer) { panel.setSelectedIndex(((Integer)value).intValue()); } return panel; } public Object getCellEditorValue() { return new Integer(panel.getSelectedIndex()); } public void itemStateChanged(ItemEvent e) { super.fireEditingStopped(); } } public static void main(String[] args) { JRadioButtonTableExample2 frame = new JRadioButtonTableExample2(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setSize( 630, 140 ); frame.setVisible(true); } }
why edited on 2003-06-19 12:33
有了Swing为什么还要SWT? |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
3208 | 请帮我看看这个!!(JRadioButton Table 怎么获得用户点击选择) | jimmywin | 3796 | 2003-05-27 19:34 |
2566 | Re:请帮我看看这个!! | film2000 | 275 | 2003-05-28 13:53 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |