如何对把Jtable中某一行的列变成combobox形式
2008-03-29 20:45
363 查看
第一步:自定义一个类从JCombobox中继承并实现TableCellEditor 接口
package tabledemo;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Component;
import java.util.EventObject;
import javax.swing.event.CellEditorListener;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class GenderEditor extends JComboBox implements TableCellEditor {
public GenderEditor() {
super();
addItem("张三");
addItem("萧六");
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row,
int column) {
// boolean isMale = ((Boolean) value).booleanValue();
// setSelectedIndex(isMale ? 0 : 1);
return this;
}
public void cancelCellEditing() {
}
public boolean stopCellEditing() {
return true;
}
public Object getCellEditorValue() {
return null;
}
public boolean isCellEditable(EventObject anEvent) {
return true;
}
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}
public void addCellEditorListener(CellEditorListener l) {
}
public void removeCellEditorListener(CellEditorListener l) {
}
}
第二步:自定义一个类从JCombobox中继承并实现TableCellRenderer 接口
package tabledemo;
import javax.swing.JComboBox;
import javax.swing.table.TableCellRenderer;
import java.awt.Component;
import javax.swing.JTable;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class NameRenderer extends JComboBox implements TableCellRenderer {
public NameRenderer() {
super();
addItem("张三");
addItem("李四");
addItem("王五");
addItem("萧六");
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
this.setSelectedItem(value);
return this;
}
private void jbInit() throws Exception {
}
}
第三步:修改
TableColumn tc1=jTable1.getColumnModel().getColumn(0);
tc1.setCellRenderer(new NameRenderer());
JComboBox namebox=new JComboBox();
namebox.addItem("张三");
namebox.addItem("李四");
namebox.addItem("王五");
namebox.addItem("萧六");
// tc1.setCellEditor(new DefaultCellEditor(namebox));
tc1.setCellEditor(new GenderEditor());
TableColumn tc=jTable1.getColumnModel().getColumn(1);
JComboBox sexbox=new JComboBox();
sexbox.addItem("男");
sexbox.addItem("女");
tc.setCellRenderer(new SexRenderer() );
tc.setCellEditor(new DefaultCellEditor(sexbox));
package tabledemo;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Component;
import java.util.EventObject;
import javax.swing.event.CellEditorListener;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class GenderEditor extends JComboBox implements TableCellEditor {
public GenderEditor() {
super();
addItem("张三");
addItem("萧六");
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row,
int column) {
// boolean isMale = ((Boolean) value).booleanValue();
// setSelectedIndex(isMale ? 0 : 1);
return this;
}
public void cancelCellEditing() {
}
public boolean stopCellEditing() {
return true;
}
public Object getCellEditorValue() {
return null;
}
public boolean isCellEditable(EventObject anEvent) {
return true;
}
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}
public void addCellEditorListener(CellEditorListener l) {
}
public void removeCellEditorListener(CellEditorListener l) {
}
}
第二步:自定义一个类从JCombobox中继承并实现TableCellRenderer 接口
package tabledemo;
import javax.swing.JComboBox;
import javax.swing.table.TableCellRenderer;
import java.awt.Component;
import javax.swing.JTable;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class NameRenderer extends JComboBox implements TableCellRenderer {
public NameRenderer() {
super();
addItem("张三");
addItem("李四");
addItem("王五");
addItem("萧六");
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
this.setSelectedItem(value);
return this;
}
private void jbInit() throws Exception {
}
}
第三步:修改
TableColumn tc1=jTable1.getColumnModel().getColumn(0);
tc1.setCellRenderer(new NameRenderer());
JComboBox namebox=new JComboBox();
namebox.addItem("张三");
namebox.addItem("李四");
namebox.addItem("王五");
namebox.addItem("萧六");
// tc1.setCellEditor(new DefaultCellEditor(namebox));
tc1.setCellEditor(new GenderEditor());
TableColumn tc=jTable1.getColumnModel().getColumn(1);
JComboBox sexbox=new JComboBox();
sexbox.addItem("男");
sexbox.addItem("女");
tc.setCellRenderer(new SexRenderer() );
tc.setCellEditor(new DefaultCellEditor(sexbox));
相关文章推荐
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- 如何:使 comboBox 输入状态变成 readonly 方式;TextBox 只读时的效果;
- 如何:使 comboBox 输入状态变成 readonly 方式;TextBox 只读时的效果;
- 如何把图片变成文本形式
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- 如何:使 comboBox 输入状态变成 readonly 方式;TextBox 只读时的效果 (转载)
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- 【转载】Matlab中如何加载.mat变成矩阵形式
- java 导入 如何防止数字变成科学计数法的形式
- 如何将纸质文字变成word形式?
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- TXT文件 是 好多列 组成,其中有一列是 身份证,如何 用EXCEL 打开时,不会变成 科学计数的形式?
- 【经验总结】巧用awk:如何把多行日志变成一行
- 如何:使 comboBox 输入状态变成 readonly 方式;TextBox 只读时的效果
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- 用devexpress把gridview的一列设置成combobox属性后,如何把其中一行改成dateedit属性
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- 如何在JTable中动态添加一行