谁帮写个小列子:JTable中第一排是一排JCheckBox 网上看到很多关于这个问题的答案,都说什么要实例化两个接口,感觉都说的很模糊,没有例子,我想要一个简单的例子,麻烦各位高手了。要求:一个10行6列的在JFRAME中的JTABLE,要求第一排是一行JCHEKBOX!JCHEKBOX要求是可以点的! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TableColumnModel columnModel = table.getColumnModel(); TableColumn stateColumn = columnModel.getColumn(stateIndex); stateColumn.setCellEditor(new ComCellEditor(new Object[]{1,2,3})); class ComCellEditor extends AbstractCellEditor implements TableCellEditor { JComboBox cobox; public ComCellEditor(Object objects[]) { cobox = new JComboBox(objects); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { cobox.setSelectedItem(value.toString()); return cobox; } public boolean shouldSelectCell(EventObject anEvent) { return true; } public void cancelCellEditing() { super.cancelCellEditing(); } public boolean isCellEditable(EventObject anEvent) { if (anEvent instanceof MouseEvent) { return ( (MouseEvent) anEvent).getClickCount() >= 2; } return true; } public boolean stopCellEditing() { super.stopCellEditing(); return true; } public Object getCellEditorValue() { return cobox.getSelectedItem(); } } public class TableIncludeCheckbox { public TableIncludeCheckbox() { // TODO Auto-generated constructor stub JFrame frame = new JFrame(); JTable table = new JTable(2, 2); JCheckBox checkbox = new JCheckBox(); DefaultCellEditor ce = new DefaultCellEditor(checkbox); table.getColumnModel().getColumn(0).setCellEditor(ce); frame.add(table); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setVisible(true); } public static void main(String[] args) { new TableIncludeCheckbox(); }} 不过有一些误区,通常Render用来做表现,而Editor用来做编辑。两者分工不同。尽管有时一些工作两者都可以完成,但是,个人认为还是分开来代码的职责分工较为明确,结构也合理一些。package zjtest;import java.awt.BorderLayout;import java.awt.Component;import java.util.EventObject;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.CellEditorListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableCellEditor;import javax.swing.table.TableCellRenderer;public class CheckBoxTable extends JFrame { private static final long serialVersionUID = 1L; public CheckBoxTable() { JTable jt = new JTable(new AbstractTableModel() { private static final long serialVersionUID = 1L; public int getColumnCount() { return 10; } public int getRowCount() { return 16; } public Object getValueAt(int r, int c) { if (c == 0) { return new Boolean(r % 2 == 0); } return ""; } public Class getColumnClass(int c) { return c == 0 ? Boolean.class : String.class; } public boolean isCellEditable(int row, int col) { return true; } }); jt.setDefaultRenderer(Boolean.class, new CheckBoxCellRender()); jt.setDefaultEditor(Boolean.class, new CheckBoxCellEditor()); JScrollPane jsp = new JScrollPane(jt); getContentPane().add(jsp, BorderLayout.CENTER); pack(); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String args[]) { new CheckBoxTable(); } class CheckBoxCellRender extends JCheckBox implements TableCellRenderer { private static final long serialVersionUID = 1L; public CheckBoxCellRender() { super(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { // System.out.println(value.getClass()); return this; } } class CheckBoxCellEditor extends JCheckBox implements TableCellEditor { private static final long serialVersionUID = 1L; public CheckBoxCellEditor() { super(); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int col) { return this; } public void addCellEditorListener(CellEditorListener arg0) { } public void cancelCellEditing() { } public Object getCellEditorValue() { return null; } public boolean isCellEditable(EventObject arg0) { return true; } public void removeCellEditorListener(CellEditorListener arg0) { } public boolean shouldSelectCell(EventObject arg0) { return true; } public boolean stopCellEditing() { // TODO Auto-generated method stub return true; } }}简单实现,没什么实际意义。希望对你有所帮助。 import java.awt.BorderLayout;import java.awt.Component;import java.awt.Rectangle;import java.util.EventObject;import java.util.Vector;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.event.CellEditorListener;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellEditor;import javax.swing.table.TableCellRenderer;public class table_rowCheckBOX { Vector vec_row1 = new Vector(); Vector vec_row2 = new Vector(); Vector data = new Vector(); Vector vec_column = new Vector(); JTable table; JScrollPane jsp; MyTableModel table_partModel; public table_rowCheckBOX() { vec_row1.add(""); vec_row1.add(""); vec_row1.add(""); vec_row2.add(""); vec_row2.add(""); vec_row2.add(""); data.add(vec_row1); data.add(vec_row2); vec_column.add("1"); vec_column.add("2"); vec_column.add("3"); table_partModel=new MyTableModel(data,vec_column); JFrame frame = new JFrame(); frame.setLayout(null); table = new JTable(table_partModel); MyRender renderer1 = new MyRender(); table.setDefaultRenderer(Object.class, renderer1); jsp = new JScrollPane(); jsp.getViewport().add(table,null); jsp.setBounds(new Rectangle(10,10,200,200)); frame.add(jsp,null); MyEditor editor1 = new MyEditor(); table.setDefaultEditor(Object.class,editor1); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setVisible(true); } class MyRender implements TableCellRenderer{ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,int col) { if (row == 0){ return new JCheckBox(); } else return null; } } class MyTableModel extends DefaultTableModel{ public MyTableModel(Vector data,Vector columns){ super(data,columns); } public boolean isCellEditable(int row,int column){ return true; } public Class getColumnClass(int col) { return Object.class; } } class MyEditor implements TableCellEditor{ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (row == 0){ return new JCheckBox(); } else return null; } public void addCellEditorListener(CellEditorListener l) { } public void cancelCellEditing() { } public Object getCellEditorValue() { return null; } public boolean isCellEditable(EventObject anEvent) { return true; } public void removeCellEditorListener(CellEditorListener l) { // TODO Auto-generated method stub } public boolean shouldSelectCell(EventObject anEvent) { // TODO Auto-generated method stub return true; } public boolean stopCellEditing() { // TODO Auto-generated method stub return true; } } public static void main(String[] args) { new table_rowCheckBOX(); }} 公司让你做数字移动通信项目 %s替换 如何实现windows下的JIT?? 关于java对象存储空间的问题? 一个关于Set的问题! 如何判断? 求一简单的程序,主要是想看看实现思想~ 怎么这个问题简单到没人可以回答? 乱码!!!!!在线等待 请问考过scjp人指点小弟 如何利用右键弹出菜单,对文本框的内容进行复制,粘贴等操作? 在Swing下如何实现最大化窗口后里面的内容和组件也跟着一起最大化?
TableColumn stateColumn = columnModel.getColumn(stateIndex);
stateColumn.setCellEditor(new ComCellEditor(new Object[]{1,2,3})); class ComCellEditor
extends AbstractCellEditor implements TableCellEditor {
JComboBox cobox;
public ComCellEditor(Object objects[]) {
cobox = new JComboBox(objects);
} public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected,
int row, int column) {
cobox.setSelectedItem(value.toString());
return cobox;
} public boolean shouldSelectCell(EventObject anEvent) {
return true;
} public void cancelCellEditing() {
super.cancelCellEditing();
} public boolean isCellEditable(EventObject anEvent) {
if (anEvent instanceof MouseEvent) {
return ( (MouseEvent) anEvent).getClickCount() >= 2;
}
return true;
} public boolean stopCellEditing() {
super.stopCellEditing();
return true;
} public Object getCellEditorValue() {
return cobox.getSelectedItem(); }
}
public class TableIncludeCheckbox {
public TableIncludeCheckbox() {
// TODO Auto-generated constructor stub
JFrame frame = new JFrame();
JTable table = new JTable(2, 2);
JCheckBox checkbox = new JCheckBox();
DefaultCellEditor ce = new DefaultCellEditor(checkbox);
table.getColumnModel().getColumn(0).setCellEditor(ce);
frame.add(table);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
public static void main(String[] args) {
new TableIncludeCheckbox();
}
}
import java.awt.Component;
import java.util.EventObject;import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;public class CheckBoxTable extends JFrame { private static final long serialVersionUID = 1L; public CheckBoxTable() { JTable jt = new JTable(new AbstractTableModel() { private static final long serialVersionUID = 1L; public int getColumnCount() {
return 10;
} public int getRowCount() {
return 16;
} public Object getValueAt(int r, int c) {
if (c == 0) {
return new Boolean(r % 2 == 0);
}
return "";
} public Class getColumnClass(int c) {
return c == 0 ? Boolean.class : String.class;
} public boolean isCellEditable(int row, int col) {
return true;
} }); jt.setDefaultRenderer(Boolean.class, new CheckBoxCellRender());
jt.setDefaultEditor(Boolean.class, new CheckBoxCellEditor()); JScrollPane jsp = new JScrollPane(jt);
getContentPane().add(jsp, BorderLayout.CENTER);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
} public static void main(String args[]) {
new CheckBoxTable();
} class CheckBoxCellRender extends JCheckBox implements TableCellRenderer { private static final long serialVersionUID = 1L; public CheckBoxCellRender() {
super();
} public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int col) {
// System.out.println(value.getClass());
return this;
} } class CheckBoxCellEditor extends JCheckBox implements TableCellEditor { private static final long serialVersionUID = 1L; public CheckBoxCellEditor() {
super();
} public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int col) {
return this;
} public void addCellEditorListener(CellEditorListener arg0) { } public void cancelCellEditing() { } public Object getCellEditorValue() {
return null;
} public boolean isCellEditable(EventObject arg0) {
return true;
} public void removeCellEditorListener(CellEditorListener arg0) {
} public boolean shouldSelectCell(EventObject arg0) {
return true;
} public boolean stopCellEditing() {
// TODO Auto-generated method stub
return true;
} }}简单实现,没什么实际意义。希望对你有所帮助。
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Rectangle;
import java.util.EventObject;
import java.util.Vector;import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.CellEditorListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;public class table_rowCheckBOX {
Vector vec_row1 = new Vector();
Vector vec_row2 = new Vector();
Vector data = new Vector();
Vector vec_column = new Vector();
JTable table;
JScrollPane jsp;
MyTableModel table_partModel;
public table_rowCheckBOX() {
vec_row1.add("");
vec_row1.add("");
vec_row1.add("");
vec_row2.add("");
vec_row2.add("");
vec_row2.add("");
data.add(vec_row1);
data.add(vec_row2);
vec_column.add("1");
vec_column.add("2");
vec_column.add("3");
table_partModel=new MyTableModel(data,vec_column);
JFrame frame = new JFrame();
frame.setLayout(null);
table = new JTable(table_partModel);
MyRender renderer1 = new MyRender();
table.setDefaultRenderer(Object.class, renderer1);
jsp = new JScrollPane();
jsp.getViewport().add(table,null);
jsp.setBounds(new Rectangle(10,10,200,200));
frame.add(jsp,null);
MyEditor editor1 = new MyEditor();
table.setDefaultEditor(Object.class,editor1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
class MyRender implements TableCellRenderer{ public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,int col) {
if (row == 0){
return new JCheckBox();
}
else
return null;
}
}
class MyTableModel extends DefaultTableModel{
public MyTableModel(Vector data,Vector columns){
super(data,columns);
}
public boolean isCellEditable(int row,int column){
return true;
}
public Class getColumnClass(int col) {
return Object.class;
}
}
class MyEditor implements TableCellEditor{
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
if (row == 0){
return new JCheckBox();
}
else
return null;
} public void addCellEditorListener(CellEditorListener l) {
} public void cancelCellEditing() {
} public Object getCellEditorValue() {
return null;
} public boolean isCellEditable(EventObject anEvent) {
return true;
} public void removeCellEditorListener(CellEditorListener l) {
// TODO Auto-generated method stub
} public boolean shouldSelectCell(EventObject anEvent) {
// TODO Auto-generated method stub
return true;
} public boolean stopCellEditing() {
// TODO Auto-generated method stub
return true;
}
}
public static void main(String[] args) {
new table_rowCheckBOX();
}
}