怎样在指定的table单元格处生成下拉列表
2005-08-30 15:56
309 查看
以下是调用方法:
/****************************************************************/
DefaultTableModel model = new DefaultTableModel(); //
/*设置表格模型*/
model.setDataVector(rowDatas, tableHeadName);
/*表格使用模型*/
// JBTable table = new JBTable(tableModel);
JBTable table = new JBTable();
table.setRowSelectionAllowed(true); //add
table.setModel(model);
JTextField text = new JTextField(); //
JComboBox com_size = new JComboBox(); //字体大小
com_size.addItem("1");
com_size.addItem("2");
com_size.addItem("3");
com_size.addItem("4");
com_size.addItem("5");
com_size.addItem("6");
JBMutiTypeEditor com_edit = new JBMutiTypeEditor(text, com_size); //
TableColumn aColumn1 = table.getColumn("属性");
aColumn1.setCellEditor(com_edit);
/****************************************************************/
上边代码没什么特别的,关键在以下的类。
package jbpd.application;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import javax.swing.table.*;
import java.util.EventObject;
import javax.swing.table.*;
class JBMutiTypeEditor
extends DefaultCellEditor {
JTable editingTable = new JTable();
JTextField textComponent;
JComboBox comboComponent;
boolean textOrNot = true;
public JBMutiTypeEditor(JTextField text, JComboBox combo) {
super(text);
textComponent = text;
comboComponent = combo;
}
public void setTextOrNot(boolean textOrNot) {
this.textOrNot = textOrNot;
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected,
int row, int column) {
editingTable = table;
String flag = (String) table.getValueAt(row, 0);
//与jbpage表中的“页面字体”列对应
if (flag.equals("存储方式") || flag.equals("是否被选中")) {
String item = (value != null) ? value.toString() : "1";
DefaultComboBoxModel model = (DefaultComboBoxModel) comboComponent.
getModel();
for (int i = 0; i < model.getSize(); i++) {
String aItem = (String) model.getElementAt(i);
if (aItem.equals(item)) {
comboComponent.setSelectedIndex(i);
}
}
return comboComponent;
}
if (flag.equals("字体大小") && row == 3) {
String item = (value != null) ? value.toString() : "1";
DefaultComboBoxModel model = (DefaultComboBoxModel) comboComponent.
getModel();
for (int i = 0; i < model.getSize(); i++) {
String aItem = (String) model.getElementAt(i);
if (aItem.equals(item)) {
comboComponent.setSelectedIndex(i);
}
}
return comboComponent;
}
else {
textComponent.setText( (value != null) ? value.toString() : "");
return textComponent;
}
}
public boolean stopCellEditing() {
JTable aTable = this.editingTable;
int rowNo = aTable.getEditingRow();
String flag = "";
if (rowNo != -1) {
flag = (String) aTable.getValueAt(rowNo, 0);
}
if (flag.equals("存储方式")|| flag.equals("是否被选中")) {
this.delegate.setValue(comboComponent.getSelectedItem());
}
if(flag.equals("字体大小")){
this.delegate.setValue(comboComponent.getSelectedItem());
}
return super.stopCellEditing();
}
}
/****************************************************************/
DefaultTableModel model = new DefaultTableModel(); //
/*设置表格模型*/
model.setDataVector(rowDatas, tableHeadName);
/*表格使用模型*/
// JBTable table = new JBTable(tableModel);
JBTable table = new JBTable();
table.setRowSelectionAllowed(true); //add
table.setModel(model);
JTextField text = new JTextField(); //
JComboBox com_size = new JComboBox(); //字体大小
com_size.addItem("1");
com_size.addItem("2");
com_size.addItem("3");
com_size.addItem("4");
com_size.addItem("5");
com_size.addItem("6");
JBMutiTypeEditor com_edit = new JBMutiTypeEditor(text, com_size); //
TableColumn aColumn1 = table.getColumn("属性");
aColumn1.setCellEditor(com_edit);
/****************************************************************/
上边代码没什么特别的,关键在以下的类。
package jbpd.application;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import javax.swing.table.*;
import java.util.EventObject;
import javax.swing.table.*;
class JBMutiTypeEditor
extends DefaultCellEditor {
JTable editingTable = new JTable();
JTextField textComponent;
JComboBox comboComponent;
boolean textOrNot = true;
public JBMutiTypeEditor(JTextField text, JComboBox combo) {
super(text);
textComponent = text;
comboComponent = combo;
}
public void setTextOrNot(boolean textOrNot) {
this.textOrNot = textOrNot;
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected,
int row, int column) {
editingTable = table;
String flag = (String) table.getValueAt(row, 0);
//与jbpage表中的“页面字体”列对应
if (flag.equals("存储方式") || flag.equals("是否被选中")) {
String item = (value != null) ? value.toString() : "1";
DefaultComboBoxModel model = (DefaultComboBoxModel) comboComponent.
getModel();
for (int i = 0; i < model.getSize(); i++) {
String aItem = (String) model.getElementAt(i);
if (aItem.equals(item)) {
comboComponent.setSelectedIndex(i);
}
}
return comboComponent;
}
if (flag.equals("字体大小") && row == 3) {
String item = (value != null) ? value.toString() : "1";
DefaultComboBoxModel model = (DefaultComboBoxModel) comboComponent.
getModel();
for (int i = 0; i < model.getSize(); i++) {
String aItem = (String) model.getElementAt(i);
if (aItem.equals(item)) {
comboComponent.setSelectedIndex(i);
}
}
return comboComponent;
}
else {
textComponent.setText( (value != null) ? value.toString() : "");
return textComponent;
}
}
public boolean stopCellEditing() {
JTable aTable = this.editingTable;
int rowNo = aTable.getEditingRow();
String flag = "";
if (rowNo != -1) {
flag = (String) aTable.getValueAt(rowNo, 0);
}
if (flag.equals("存储方式")|| flag.equals("是否被选中")) {
this.delegate.setValue(comboComponent.getSelectedItem());
}
if(flag.equals("字体大小")){
this.delegate.setValue(comboComponent.getSelectedItem());
}
return super.stopCellEditing();
}
}
相关文章推荐
- 怎样在指定的table单元格处生成下拉列表
- 怎样在指定的table单元格处生成下拉列表
- php生成按指定时间以来的,年、季度、月份的下拉列表
- Javascript 生成无限下拉列表实现代码
- ASP.NET C#生成下拉列表树实现代码
- 【JavaScript】怎样在 js 中生成指定值、个数的数组,包含相同元素的数组
- poi生成excel设置单列为下拉列表值超过255问题解决方案
- 一起学android之怎样获取手机程序列表以及程序相关信息并启动指定程序 (26)
- 生成文件列表并读取列表中各个文件的指定内容(C语言)
- 【下拉列表值超过255问题】poi生成excel设置单列-解决方案
- POI java excel 生成下拉列表
- 利用session生成bootstrap下拉列表
- Excel调用已有数据利用已经录入的项快速的生成下拉列表
- Javascript 生成无限下拉列表实现代码
- 怎样使Excel的单元格具有下拉列表的功能
- JavaScript生成指定范围的时间列表
- 用NPOI操作EXCEL--生成下拉列表
- jsp接收到controller传来的list集合 怎么把list集合里的值添加到动态生成的下拉列表,求救。。。。急急急
- 生成指定日期段的日期列表,月份列表
- Android 使用addview生成列表,界面切换时将指定的行数滚动到列表的第一行