用来JTable控制输入数字判断

/**
 * 用来JTable控制输入数字判断
 */
package com.sa.fb.pos.print;
import java.awt.Component;

import javax.swing.DefaultCellEditor;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import com.sa.fb.pos.utils.DialogUtil;

public class IntegerEditor extends DefaultCellEditor {

    private static final long serialVersionUID = -3781656457614462617L;
    private String oldText;
    public IntegerEditor() {
        super(new JTextField());
        //field.setBorder(BorderFactory.createLineBorder(Color.black));
    }

    public Object getCellEditorValue() {
        String value = (String) delegate.getCellEditorValue();
        if (value != null && value.trim().length() > 0) {
            try {
                Integer.parseInt(value);
            } catch (Throwable t) {
                //JOptionPane.showMessageDialog(null, "请输入实数值! ");
                DialogUtil.alert("请输入实数值! ");
                return oldText;
            }
        }
        return value;
    }

    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int col) {
            oldText = value.toString();
        return super.getTableCellEditorComponent(table, value, isSelected, row,
                col);
    }

}



    /**
     * 利用TableModel的更新,来重置JTable值
     */
    public void resetTableColumn() {
        /**row:二维数组;columns:一维数组****/
        TableModel model = new ReportTableModel(columnList2Array(listColumn),this.tablename);
        tableColumn.setModel(model);
        tableColumn.setCellSelectionEnabled(true);
        tableColumn.getTableHeader().setReorderingAllowed(false);//不允许列重新排序
        tableColumn.setRowHeight(23); // 设置表格的行高度

        TableColumnModel TCM=tableColumn.getColumnModel();
        /***控制输入整数satrt***/
        TCM.getColumn(3).setCellEditor(new IntegerEditor());
        TCM.getColumn(4).setCellEditor(new IntegerEditor());
        /***控制输入整数end***/
        TCM.getColumn(5).setCellEditor(new DefaultCellEditor(new JComboBox(positionJC))) ;
        TCM.getColumn(6).setCellEditor(new DefaultCellEditor(new JComboBox(fontJC))) ;
        TCM.getColumn(7).setCellEditor(new DefaultCellEditor( new JComboBox(fontSizeJC))) ;
        TCM.getColumn(9).setCellEditor(new DefaultCellEditor(new JComboBox(patternJC))) ;
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JTable是Java Swing库中的一个组件,用于显示和编辑表格数据。要制JTable中的单元格只能输入日期格式,可以通过自定义TableCellEditor和TableCellRenderer来实现。 首先,你需要创建一个继承自AbstractCellEditor的类,用于编辑单元格的内容。在这个类中,你可以使用JFormattedTextField来限制输入的日期格式。例如: ```java import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.text.SimpleDateFormat; import java.util.Date; public class DateCellEditor extends AbstractCellEditor implements TableCellEditor { private JFormattedTextField textField; public DateCellEditor() { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); textField = new JFormattedTextField(dateFormat); textField.setBorder(null); } @Override public Object getCellEditorValue() { return textField.getValue(); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textField.setValue(value); return textField; } } ``` 然后,你需要创建一个继承自DefaultTableCellRenderer的类,用于渲染单元格的内容。在这个类中,你可以将日期对象格式化为指定的日期格式。例如: ```java import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.text.SimpleDateFormat; import java.util.Date; public class DateCellRenderer extends DefaultTableCellRenderer { private SimpleDateFormat dateFormat; public DateCellRenderer() { dateFormat = new SimpleDateFormat("yyyy-MM-dd"); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof Date) { value = dateFormat.format((Date) value); } return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } } ``` 最后,你需要将这两个类应用到JTable中的指定列。例如: ```java JTable table = new JTable(); TableColumnModel columnModel = table.getColumnModel(); TableColumn dateColumn = columnModel.getColumn(0); // 假设第一列是日期列 dateColumn.setCellEditor(new DateCellEditor()); dateColumn.setCellRenderer(new DateCellRenderer()); ``` 这样,JTable中的指定单元格就会被限制为只能输入日期格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值