程序代码如下:import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;@SuppressWarnings("serial")
public class TestJtable extends JPanel {
public TestJtable(){
init();
} private void init() {
setLayout(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(createTable());
add(scrollPane);
}
private JTable createTable() {
JTable table = new JTable();
String[] tableHeads = new String[]{"端口1","端口2","端口3"};
DefaultTableModel dtm = (DefaultTableModel)table.getModel();
dtm.setColumnIdentifiers(tableHeads); if( table.getRowSelectionAllowed()==true){
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
}
/*******添加的一些数据,也可以从数据库中提取数据*************/
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
/*****设置table的列模型****/
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));
tcm.getColumn(1).setCellEditor(new DefaultCellEditor(new JCheckBox()));
tcm.getColumn(2).setCellEditor(new DefaultCellEditor(new JCheckBox()));
tcm.getColumn(0).setCellRenderer(new TestTableCellRenderer());
tcm.getColumn(0).setPreferredWidth(80);
tcm.getColumn(0).setWidth(80);
tcm.getColumn(0).setMaxWidth(80);
tcm.getColumn(1).setCellRenderer(new TestTableCellRenderer());
tcm.getColumn(1).setPreferredWidth(80);
tcm.getColumn(1).setWidth(80);
tcm.getColumn(1).setMaxWidth(80);
tcm.getColumn(2).setCellRenderer(new TestTableCellRenderer());
tcm.getColumn(2).setPreferredWidth(80);
tcm.getColumn(2).setWidth(80);
tcm.getColumn(2).setMaxWidth(80);
return table;
} public static void main(String[] args) {
JFrame jframe = new JFrame();
jframe.setBounds(300,100,300,200);
jframe.setTitle("测试");
jframe.add(new TestJtable());
jframe.setVisible(true);
}
class TestTableCellRenderer extends JCheckBox implements TableCellRenderer{ @Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Boolean b = (Boolean) value;
this.setSelected(b.booleanValue());
return this; }
}
} 设置每一行只能选择一个,希望大家帮帮忙 小弟感激不尽...
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;@SuppressWarnings("serial")
public class TestJtable extends JPanel {
public TestJtable(){
init();
} private void init() {
setLayout(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(createTable());
add(scrollPane);
}
private JTable createTable() {
JTable table = new JTable();
String[] tableHeads = new String[]{"端口1","端口2","端口3"};
DefaultTableModel dtm = (DefaultTableModel)table.getModel();
dtm.setColumnIdentifiers(tableHeads); if( table.getRowSelectionAllowed()==true){
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
}
/*******添加的一些数据,也可以从数据库中提取数据*************/
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
dtm.addRow(new Object[]{new Boolean(false),new Boolean(false),new Boolean(false)});
/*****设置table的列模型****/
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));
tcm.getColumn(1).setCellEditor(new DefaultCellEditor(new JCheckBox()));
tcm.getColumn(2).setCellEditor(new DefaultCellEditor(new JCheckBox()));
tcm.getColumn(0).setCellRenderer(new TestTableCellRenderer());
tcm.getColumn(0).setPreferredWidth(80);
tcm.getColumn(0).setWidth(80);
tcm.getColumn(0).setMaxWidth(80);
tcm.getColumn(1).setCellRenderer(new TestTableCellRenderer());
tcm.getColumn(1).setPreferredWidth(80);
tcm.getColumn(1).setWidth(80);
tcm.getColumn(1).setMaxWidth(80);
tcm.getColumn(2).setCellRenderer(new TestTableCellRenderer());
tcm.getColumn(2).setPreferredWidth(80);
tcm.getColumn(2).setWidth(80);
tcm.getColumn(2).setMaxWidth(80);
return table;
} public static void main(String[] args) {
JFrame jframe = new JFrame();
jframe.setBounds(300,100,300,200);
jframe.setTitle("测试");
jframe.add(new TestJtable());
jframe.setVisible(true);
}
class TestTableCellRenderer extends JCheckBox implements TableCellRenderer{ @Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Boolean b = (Boolean) value;
this.setSelected(b.booleanValue());
return this; }
}
} 设置每一行只能选择一个,希望大家帮帮忙 小弟感激不尽...
我刚也试了 用JRadioButton也会出现 多个可以同时选啊 我要的效果是 一行只能选一个 你帮我看看 谢谢您了
程序如下:
package com.Test;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*; public class rdButtonTest extends JFrame{
public rdButtonTest(){
super( "rdButtonTest "); DefaultTableModel dm = new DefaultTableModel();
dm.setDataVector(new Object[][]{
{new JRadioButton( "A1 "), new JRadioButton( "A2 ")},
{new JRadioButton( "B1 "), new JRadioButton( "B2 ")}},
new Object[]{ "Button ", "Group "});
JTable table = new JTable(dm){
public void tableChanged(TableModelEvent e){
super.tableChanged(e);
repaint();
}
};
table.getColumn( "Button ").setCellRenderer(new ButtonRenderer());
table.getColumn( "Button ").setCellEditor(new ButtonEditor(new JCheckBox()));
table.getColumn( "Group ").setCellRenderer(new ButtonRenderer());
table.getColumn( "Group ").setCellEditor(new ButtonEditor(new JCheckBox()));
JScrollPane scroll = new JScrollPane(table);
getContentPane().add(scroll);
setSize(200,140);
setVisible(true);
}
public static void main(String[] args){
rdButtonTest frame = new rdButtonTest();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//
class ButtonRenderer 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 ButtonEditor extends DefaultCellEditor{
// private JButton button;
private JComponent button;
public ButtonEditor(JCheckBox checkBox){
super(checkBox);
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
if (value==null)return null;
button = (JComponent)value;
// button = (JButton)value;
// button.setOpaque(true);
//想实现选中变色没有成功
/* if (isSelected) {
button.setForeground(table.getSelectionForeground());
button.setBackground(table.getSelectionBackground());
} else{
button.setForeground(table.getForeground());
button.setBackground(table.getBackground());
}*/
//这一段可以增加button事件,但ButtonEditor要实现ItemListener接口
// button.addItemListener(this);
return (JComponent)value;
}
public Object getCellEditorValue(){
return button;
} }怎么改? 麻烦 您看看 谢谢啦