您的位置:首页 > 其它

如何对把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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐