Java 中在JTable的第一列放入单选按钮 要求: JTable的行数是动态生成,如果(int line)传入n则生成n个单选按钮 请给源码,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说实话没太明白想要一个什么样的效果。简单写了一个,仅供参考。import javax.swing.*;import javax.swing.table.*;import javax.swing.JRadioButton;import javax.swing.ButtonGroup;import java.awt.*;import java.util.*;public class TableTest extends JFrame { public TableTest () { Vector cell ; Vector row = new Vector(); DefaultTableModel tableModel = new DefaultTableModel(); String[] tableHeads = {"序号","姓名", "年龄", "单选框"}; Vector tableHeadName = new Vector(); for (int i = 0; i < tableHeads.length; i++) { tableHeadName.add(tableHeads[i]); } for (int i = 1; i <= 30; i++) { cell = new Vector(); cell.add(i); cell.add("曹操"+i); cell.add(""); cell.add(new JRadioButton("",true)); row.add(cell); } tableModel.setDataVector(row, tableHeadName); JTable table = new JTable (tableModel); TableColumn column; column=table.getColumnModel().getColumn(3); column.setCellRenderer(new MyTableCellRenderer()); JScrollPane scrollPane = new JScrollPane(table); this.getContentPane().add(scrollPane); this.setTitle("Table表格的例子"); this.setSize(600, 300); this.setVisible(true); } public static void main(String[] args) { TableTest test = new TableTest (); }}class MyTableCellRenderer extends JRadioButton implements TableCellRenderer{ public MyTableCellRenderer() { super(); } public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) { if(hasFocus){ this.setSelected(true); }else{ this.setSelected(false); } return this; } } http://www.crionics.com/products/opensource/faq/swing_ex/src/examples/JRadioButtonTableExample.java写swing的话那边有不少好的实例的 看看是如何将没列渲染成不同的列的import java.awt.Color;import java.awt.Component;import java.lang.ref.WeakReference;import java.util.ArrayList;import java.util.EventObject;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.UIManager;import javax.swing.event.CellEditorListener;import javax.swing.event.ChangeEvent;import javax.swing.table.TableCellEditor;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableModel;/** * @version 1.0 */public class TestRendererJTableAll extends JFrame{ /** serialVersionUID = 1L. */ private static final long serialVersionUID = 1L; public TestRendererJTableAll() { int tableRow = 10; int tableColumn = 6; Object[][] datas = new Object[tableRow][tableColumn]; Object[] names = new Object[tableColumn]; for (int r = 0; r < tableRow; r++) { for (int c = 0; c < tableColumn; c++) { datas[r][c] = "(" + String.valueOf(r) + "," + String.valueOf(c) + ")"; } } for (int c = 0; c < tableColumn; c++) { names[c] = c; } JTable table = new CustomTable(datas, names); add(new JScrollPane(table)); } /** * @author ems */ class CustomTable extends JTable { /** serialVersionUID = 1L */ private static final long serialVersionUID = 1L; /** * */ public CustomTable() { super(); } /** * @param dm */ public CustomTable(TableModel dm) { super(dm, null, null); } /** * @param rowData * @param columnNames */ public CustomTable(final Object[][] rowData, final Object[] columnNames) { super(rowData, columnNames); setRowHeight(super.getRowHeight() + 5); } /** * @see javax.swing.JTable#getCellRenderer(int, int) */ @Override public TableCellRenderer getCellRenderer(int row, int column) { return new JComponentTableCellRenderer(column); } /** * @see javax.swing.JTable#getCellEditor(int, int) */ @Override public TableCellEditor getCellEditor(int row, int column) { return new JComponentTableCellRenderer(column); } } /** * @author ems */ class JComponentTableCellRenderer extends JComponent implements TableCellRenderer, TableCellEditor { final Color SELECTION_BACKGROUND = UIManager.getColor("TextField.selectionBackground"); final Color SELECTION_FOREGROUND = UIManager.getColor("TextField.selectionForeground"); private ArrayList<WeakReference> listeners = new ArrayList<WeakReference>(); private static final long serialVersionUID = 1L; private JComponent component_ = null; private int type_ = 0; public JComponentTableCellRenderer(int type) { this.type_ = type; } /** * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, * java.lang.Object, boolean, boolean, int, int) */ @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (null == value) { return null; } setComponent(value); this.component_.setOpaque(true); if (isSelected) { this.component_.setBackground(SELECTION_BACKGROUND); this.component_.setForeground(SELECTION_FOREGROUND); } if (hasFocus) { this.component_.setBackground(Color.GREEN); this.component_.setForeground(Color.BLUE); } return this.component_; } private void setComponent(Object value) { switch (this.type_) { case 1: // JButton case 2: // JButton this.component_ = new JButton(); ((JButton) this.component_).setText(value.toString()); break; case 3: // JComboBox this.component_ = new JComboBox(); ((JComboBox) this.component_).addItem(value); ((JComboBox) this.component_).addItem("test 1"); ((JComboBox) this.component_).addItem("test 2"); break; case 4: // JCheckBox this.component_ = new JCheckBox(); if (value.equals(true)) { ((JCheckBox) this.component_).setSelected(true); } else if (value.equals(false)) { ((JCheckBox) this.component_).setSelected(false); } break; case 5: // JRadioButton this.component_ = new JRadioButton(); if (value.equals(true)) { ((JRadioButton) this.component_).setSelected(true); } else if (value.equals(false)) { ((JRadioButton) this.component_).setSelected(false); } break; default: // JLabel, default this.component_ = new JLabel(); ((JLabel) this.component_).setText(value.toString()); } this.component_.setBorder(null); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { setComponent(value); return this.component_; } @Override public void addCellEditorListener(CellEditorListener l) { listeners.add(new WeakReference(l)); } @Override public void cancelCellEditing() { fireEditingCanceled(); } @Override public Object getCellEditorValue() { Object value = null; switch (this.type_) { case 1: // // JButton value = ((JButton) this.component_).getText(); break; case 2: // JButton value = ((JButton) this.component_).getText(); break; case 3: // JComboBox value = ((JComboBox) this.component_).getSelectedItem(); break; case 4: // JCheckBox value = ((JCheckBox) this.component_).isSelected(); break; case 5: // JRadioButton value = ((JRadioButton) this.component_).isSelected(); break; default: // JLabel, default value = ((JLabel) this.component_).getText(); } return value; } @Override public boolean isCellEditable(EventObject anEvent) { return true; } @Override public void removeCellEditorListener(CellEditorListener l) { this.listeners.remove(new WeakReference(l)); } @Override public boolean shouldSelectCell(EventObject anEvent) { return true; } @Override public boolean stopCellEditing() { fireEditingStopped(); return true; } protected void fireEditingStopped() { ChangeEvent e = new ChangeEvent(this.component_); for (WeakReference ref : this.listeners) { CellEditorListener l = (CellEditorListener) ref.get(); l.editingStopped(e); } } protected void fireEditingCanceled() { ChangeEvent e = new ChangeEvent(this.component_); for (WeakReference ref : this.listeners) { CellEditorListener l = (CellEditorListener) ref.get(); l.editingCanceled(e); } } } public static void main(String[] args){ new TestRendererJTableAll().setVisible(true); }} 将Log4J封装成一个class,但是使用该封装class,无法定位错误到错误发生的类,或错误发生的那一行, jframe 布局 求助:问道关于字符串的题。 Java写音乐播放器问题 关于正则表达式 请问哪里能够下载到支持模糊查询的java帮助文档? 用java调用url接口的问题。 junit如何测试访问数据库的类? JBuilder连接SQL Server 2000问题? cvs,vss是什么??????解释一下,送分 制作一个24点游戏的算法………… JAVA 中 new File(".")是什么意思?
简单写了一个,仅供参考。
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import java.awt.*;
import java.util.*;
public class TableTest extends JFrame {
public TableTest () {
Vector cell ;
Vector row = new Vector(); DefaultTableModel tableModel = new DefaultTableModel(); String[] tableHeads = {"序号","姓名", "年龄", "单选框"};
Vector tableHeadName = new Vector();
for (int i = 0; i < tableHeads.length; i++) {
tableHeadName.add(tableHeads[i]);
}
for (int i = 1; i <= 30; i++) {
cell = new Vector();
cell.add(i);
cell.add("曹操"+i);
cell.add(""); cell.add(new JRadioButton("",true));
row.add(cell);
} tableModel.setDataVector(row, tableHeadName);
JTable table = new JTable (tableModel); TableColumn column;
column=table.getColumnModel().getColumn(3);
column.setCellRenderer(new MyTableCellRenderer());
JScrollPane scrollPane = new JScrollPane(table);
this.getContentPane().add(scrollPane);
this.setTitle("Table表格的例子");
this.setSize(600, 300);
this.setVisible(true);
}
public static void main(String[] args) {
TableTest test = new TableTest ();
}
}class MyTableCellRenderer extends JRadioButton implements TableCellRenderer{
public MyTableCellRenderer() {
super();
}
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) {
if(hasFocus){
this.setSelected(true);
}else{
this.setSelected(false);
}
return this;
}
}
import java.awt.Component;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.EventObject;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;/**
* @version 1.0
*/
public class TestRendererJTableAll extends JFrame{
/** serialVersionUID = 1L. */
private static final long serialVersionUID = 1L;
public TestRendererJTableAll() {
int tableRow = 10;
int tableColumn = 6;
Object[][] datas = new Object[tableRow][tableColumn];
Object[] names = new Object[tableColumn];
for (int r = 0; r < tableRow; r++) {
for (int c = 0; c < tableColumn; c++) {
datas[r][c] = "(" + String.valueOf(r) + "," + String.valueOf(c) + ")";
}
}
for (int c = 0; c < tableColumn; c++) {
names[c] = c;
}
JTable table = new CustomTable(datas, names);
add(new JScrollPane(table));
} /**
* @author ems
*/
class CustomTable extends JTable { /** serialVersionUID = 1L */
private static final long serialVersionUID = 1L; /**
*
*/
public CustomTable() {
super();
} /**
* @param dm
*/
public CustomTable(TableModel dm) {
super(dm, null, null);
} /**
* @param rowData
* @param columnNames
*/
public CustomTable(final Object[][] rowData, final Object[] columnNames) {
super(rowData, columnNames);
setRowHeight(super.getRowHeight() + 5);
} /**
* @see javax.swing.JTable#getCellRenderer(int, int)
*/
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
return new JComponentTableCellRenderer(column);
} /**
* @see javax.swing.JTable#getCellEditor(int, int)
*/
@Override
public TableCellEditor getCellEditor(int row, int column) {
return new JComponentTableCellRenderer(column);
} } /**
* @author ems
*/
class JComponentTableCellRenderer extends JComponent implements
TableCellRenderer,
TableCellEditor { final Color SELECTION_BACKGROUND = UIManager.getColor("TextField.selectionBackground"); final Color SELECTION_FOREGROUND = UIManager.getColor("TextField.selectionForeground"); private ArrayList<WeakReference> listeners = new ArrayList<WeakReference>();
private static final long serialVersionUID = 1L;
private JComponent component_ = null;
private int type_ = 0; public JComponentTableCellRenderer(int type) {
this.type_ = type;
} /**
* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,
* java.lang.Object, boolean, boolean, int, int)
*/
@Override
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
if (null == value) {
return null;
}
setComponent(value);
this.component_.setOpaque(true);
if (isSelected) {
this.component_.setBackground(SELECTION_BACKGROUND);
this.component_.setForeground(SELECTION_FOREGROUND);
}
if (hasFocus) {
this.component_.setBackground(Color.GREEN);
this.component_.setForeground(Color.BLUE);
}
return this.component_;
} private void setComponent(Object value) {
switch (this.type_) {
case 1: // JButton
case 2: // JButton
this.component_ = new JButton();
((JButton) this.component_).setText(value.toString());
break;
case 3: // JComboBox
this.component_ = new JComboBox();
((JComboBox) this.component_).addItem(value);
((JComboBox) this.component_).addItem("test 1");
((JComboBox) this.component_).addItem("test 2");
break;
case 4: // JCheckBox
this.component_ = new JCheckBox();
if (value.equals(true)) {
((JCheckBox) this.component_).setSelected(true);
} else if (value.equals(false)) {
((JCheckBox) this.component_).setSelected(false);
}
break;
case 5: // JRadioButton
this.component_ = new JRadioButton();
if (value.equals(true)) {
((JRadioButton) this.component_).setSelected(true);
} else if (value.equals(false)) {
((JRadioButton) this.component_).setSelected(false);
}
break;
default: // JLabel, default
this.component_ = new JLabel();
((JLabel) this.component_).setText(value.toString());
}
this.component_.setBorder(null);
} @Override
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column) {
setComponent(value);
return this.component_;
} @Override
public void addCellEditorListener(CellEditorListener l) {
listeners.add(new WeakReference(l));
} @Override
public void cancelCellEditing() {
fireEditingCanceled();
} @Override
public Object getCellEditorValue() {
Object value = null;
switch (this.type_) {
case 1: // // JButton
value = ((JButton) this.component_).getText();
break;
case 2: // JButton
value = ((JButton) this.component_).getText();
break;
case 3: // JComboBox
value = ((JComboBox) this.component_).getSelectedItem();
break;
case 4: // JCheckBox
value = ((JCheckBox) this.component_).isSelected();
break;
case 5: // JRadioButton
value = ((JRadioButton) this.component_).isSelected();
break;
default: // JLabel, default
value = ((JLabel) this.component_).getText();
}
return value;
} @Override
public boolean isCellEditable(EventObject anEvent) {
return true;
} @Override
public void removeCellEditorListener(CellEditorListener l) {
this.listeners.remove(new WeakReference(l));
} @Override
public boolean shouldSelectCell(EventObject anEvent) {
return true;
} @Override
public boolean stopCellEditing() {
fireEditingStopped();
return true;
} protected void fireEditingStopped() {
ChangeEvent e = new ChangeEvent(this.component_);
for (WeakReference ref : this.listeners) {
CellEditorListener l = (CellEditorListener) ref.get();
l.editingStopped(e);
}
} protected void fireEditingCanceled() {
ChangeEvent e = new ChangeEvent(this.component_);
for (WeakReference ref : this.listeners) {
CellEditorListener l = (CellEditorListener) ref.get();
l.editingCanceled(e);
}
} }
public static void main(String[] args){
new TestRendererJTableAll().setVisible(true);
}}