JTable 中如何限定输入长度?如何指定焦点?

问题一:在JTable 中如何限制输入的最大长度?

解决方法:

1、设置给JTable的单元格添加指定控件,JTextField;

2、写一个类继承JTextField,设置JTextField编辑器与文本文档联系起来,在文本文档中可以对输入的内容过滤,通过setDocument(Document d)就可以了;

3、添加第二步中 的Document对象,在这里使用 PlainDocument的对象,重写该类的insertString方法;

在该方法中添加校验;

代码片段

table.getColumnModel().getColumn(col).setCellEditor(new DefaultCellEditor(new MyText(MAXLENGTH)));
	class MyText extends JTextField{
		
		
		
		public MyText(int maxLength) {
			superini(maxLength);
			
		}
		
		/**
		 * 设置文本框最大长度
		 * 
		 * */
		void superini(int maxLength) {
			
			
				this.setDocument(new PlainDocument() {				
				@Override
				public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
					//设置文本框中最大输入长度
					if(getLength() +str.length()>maxLength)return;
					
					if(str!= null && !str.equals("")) {						
						try {
							Integer.parseInt(str);//限制文本框中只能输入数字;
						}catch(NumberFormatException e) {				
							return;
						}
						
					}
					
					super.insertString(offs, str, a);
				}
			});
				
			
			}
			
		}
 

问题二:如何将焦点设置在指定单元格中

table.getCellEditor(row, col).getTableCellEditorComponent(table, table.getValueAt(row, col), true,row, col).requestFocus();

问题三:如何选中指定行(一行或几行);

table.setRowSelectionInterval(row1, row2);

如果row1 == row2;//选中第 row1 行;

若 row1 > row2;//则选中 区间[row2,row1];

若 row2 > row1;//则选中 区间[row1,row2];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值