SWING学习:JTable实现自定义的编辑单元格 (1)
2007-04-02 21:23
477 查看
通常我们需要为不同单元格实现不同的功能,如某单元格为下拉框、选择框、弹出框等。我们可以写成一个通用的控件。下面是一个弹出颜色选择框的实例代码:
package utils;
import java.awt.Color;
import javax.swing.JColorChooser;
import javax.swing.JPanel;
public class TableCellExpressionEditor extends JPanel {
// ...按钮
private javax.swing.JButton fileButton;
// 文件路径输入框
private javax.swing.JTextField valueField;
private java.awt.Component self;
public TableCellExpressionEditor() {
self = this;
initComponents();
}
private void initComponents() {
valueField = new javax.swing.JTextField();
fileButton = new javax.swing.JButton();
setLayout(new java.awt.BorderLayout());
valueField.setText("");
add(valueField, java.awt.BorderLayout.CENTER);
fileButton.setText("...");
fileButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
fileButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
fileButtonActionPerformed(evt);
}
});
add(fileButton, java.awt.BorderLayout.EAST);
}
// 文件路径选择
private void fileButtonActionPerformed(java.awt.event.ActionEvent evt) {
String filePath = valueField.getText();
if (filePath != null && filePath.length() > 0) {
filePath = new java.io.File(filePath).getParent();
}
Color returnVal = JColorChooser.showDialog(this, "颜色选择框", Color.red);
if(returnVal!=null){
valueField.setText(returnVal.toString());
}
}
// 内部定制的TableCellEditor
class MyCustomCellEditor extends javax.swing.AbstractCellEditor implements
javax.swing.table.TableCellEditor {
public Object getCellEditorValue() {
return valueField.getText();
}
public java.awt.Component getTableCellEditorComponent(
javax.swing.JTable table, Object value, boolean isSelected,
int row, int column) {
if (value == null)
valueField.setText("");
else
valueField.setText(value.toString());
return self;
}
}
// 对外的接口方法
public void setColumn(javax.swing.table.TableColumn column) {
column.setCellEditor(null);
column.setCellEditor(new MyCustomCellEditor());
}
public String getValueFieldText(){
return valueField.getText();
}
}
如何使用该通用的控件:
TableCellExpressionEditor cellExp = new TableCellExpressionEditor();
cellExp.setColumn(curColumn);
package utils;
import java.awt.Color;
import javax.swing.JColorChooser;
import javax.swing.JPanel;
public class TableCellExpressionEditor extends JPanel {
// ...按钮
private javax.swing.JButton fileButton;
// 文件路径输入框
private javax.swing.JTextField valueField;
private java.awt.Component self;
public TableCellExpressionEditor() {
self = this;
initComponents();
}
private void initComponents() {
valueField = new javax.swing.JTextField();
fileButton = new javax.swing.JButton();
setLayout(new java.awt.BorderLayout());
valueField.setText("");
add(valueField, java.awt.BorderLayout.CENTER);
fileButton.setText("...");
fileButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
fileButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
fileButtonActionPerformed(evt);
}
});
add(fileButton, java.awt.BorderLayout.EAST);
}
// 文件路径选择
private void fileButtonActionPerformed(java.awt.event.ActionEvent evt) {
String filePath = valueField.getText();
if (filePath != null && filePath.length() > 0) {
filePath = new java.io.File(filePath).getParent();
}
Color returnVal = JColorChooser.showDialog(this, "颜色选择框", Color.red);
if(returnVal!=null){
valueField.setText(returnVal.toString());
}
}
// 内部定制的TableCellEditor
class MyCustomCellEditor extends javax.swing.AbstractCellEditor implements
javax.swing.table.TableCellEditor {
public Object getCellEditorValue() {
return valueField.getText();
}
public java.awt.Component getTableCellEditorComponent(
javax.swing.JTable table, Object value, boolean isSelected,
int row, int column) {
if (value == null)
valueField.setText("");
else
valueField.setText(value.toString());
return self;
}
}
// 对外的接口方法
public void setColumn(javax.swing.table.TableColumn column) {
column.setCellEditor(null);
column.setCellEditor(new MyCustomCellEditor());
}
public String getValueFieldText(){
return valueField.getText();
}
}
如何使用该通用的控件:
TableCellExpressionEditor cellExp = new TableCellExpressionEditor();
cellExp.setColumn(curColumn);
相关文章推荐
- SWING学习:JTable实现自定义的编辑单元格 (2)
- Swing表格自定义JTable (表格可编辑)
- Java Swing Jtable 单元格不可编辑
- swing中设置JTable的单元格不能被编辑、内容居中显示、隐藏JTable中的某一列
- swing设置JTable的单元格内容居中显示、不能被编辑,隐藏某一列
- wxPython实现指定单元格可编辑的ListCtrl
- java基础学习心得——自定义函数实现LineNumberReader
- iOS学习笔记-116.多线程15——NSOperationQueue和自定义NSOperation合用实现多线程
- Caffe学习笔记7--自定义layer的实现
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- (C#)DataGrid实现自定义分页,鼠标移至变色,删除确认、可编辑,可删除
- 翻翻git之---自定义邮件发送按钮SendButton(流程分析,实现思路可以学习下)
- 在JTable单元格上 加入组件,并赋予可编辑能力 [转]
- swing之JTable小测试(一个单元格添加两个或多个下拉框)
- QT QTableWidget中实现整行选中和禁止编辑单元格
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- Android多媒体学习四:实现图像的编辑和合成
- android 学习笔记:自定义通用ListView/GridView,实现ListAdapter 类
- Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z
- 再议将Swing组件与JTable的单元格组件