我在工作,在PROGRAME獲得所選擇的單選按鈕,我需要從一個JTable如何從JTable中
獲得所選擇的無線電BUTTOM我發現我在工作的
有一爲例類
第一:
import java.awt.Component;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JRadioButton;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
class RadioButtonRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (value == null)
return null;
return (Component) value;
}
}
class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private JRadioButton button;
public RadioButtonEditor(JCheckBox checkBox) {
super(checkBox);
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
if (value == null)
return null;
button = (JRadioButton) value;
button.addItemListener(this);
return (Component) value;
}
public Object getCellEditorValue() {
button.removeItemListener(this);
return button;
}
public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();
}
}
和第2類:
package TP2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.JButton;
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.JToggleButton;
import javax.swing.event.TableModelEvent;
import javax.swing.table.DefaultTableModel;
import net.miginfocom.swing.MigLayout;
public class tablesDesEtudiants extends JFrame {
public tablesDesEtudiants(Object[][] objt) {
super("List des etudiants");
// UIDefaults ui = UIManager.getLookAndFeel().getDefaults();
// UIManager.put("RadioButton.focus", ui.getColor("control"));
DefaultTableModel dm = new DefaultTableModel();
dm.setDataVector(objt , new Object[] {"Nom","Prénom","Année","Succs","Type","Select"});
JTable table = new JTable(dm) {
public void tableChanged(TableModelEvent e) {
super.tableChanged(e);
repaint();
}
};
final ButtonGroup group1 = new ButtonGroup();
for(int i =0 ; i<objt.length;i++){
if(objt[i][1]!=null)
group1.add((JRadioButton) dm.getValueAt(i, 5));
}
// System.out.println(objt.length);
table.getColumn("Select").setCellRenderer(new RadioButtonRenderer());
table.getColumn("Select").setCellRenderer(new RadioButtonRenderer());
table.getColumn("Select").setCellRenderer(new RadioButtonRenderer());
table.getColumn("Select").setCellRenderer(new RadioButtonRenderer());
table.getColumn("Select").setCellRenderer(new RadioButtonRenderer());
table.getColumn("Select").setCellEditor(new RadioButtonEditor(new JCheckBox()));
JScrollPane scroll = new JScrollPane(table);
JButton bView = new JButton("View");
bView.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ButtonModel choix = group1.getSelection();
if (choix != null) {
System.out.println(choix.getActionCommand());
}
else System.out.println("nullll");
}
});
JPanel pp =new JPanel();
MigLayout layout = new MigLayout(
"", // Layout Constraints
"[][]20[]", // Column constraints
"[]20[]"); // Row constraint
pp.setLayout(layout);
pp.add(scroll,"cell 1 2");
pp.add(bView,"cell 2 3");
getContentPane().add(pp);
setSize(600, 400);
setVisible(true);
}
/* public static void main(String[] args) {
JRadioButtonTableExample frame = new JRadioButtonTableExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}*/
}
在第二類我試圖添加上的ButtonGroup 所有的單選按鈕,這樣
:
final ButtonGroup group1 = new ButtonGroup();
for(int i =0 ; i<objt.length;i++){
if(objt[i][1]!=null)
group1.add((JRadioButton) dm.getValueAt(i, 5));
}
,我的問題是,我不能選擇單選按鈕:
ButtonModel choix = group1.getSelection();
if (choix != null) {
System.out.println(choix.getActionCommand());
}
else System.out.println("nullll");
}
我總是得到nullll
任何幫助PLZ!
我怎樣才能存儲布爾值從我的例子中RadioButton的結果?? –
重寫表模型中的'setValueAt()'。如果新值爲true,那麼找到當前爲true的行,並將其值設置爲false。值設置爲true併爲兩個單元格激發一個模型事件,編輯器應該覆蓋getEditorValue()並根據收音機是否被選中返回true或false。 –
謝謝先生,對於這一個^^ –