⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snippet179.java

📁 Eclipse JAVA开发软件中SWT各控件范例源码
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.snippets;/* * Text example snippet: verify input (format for date) *  * For a list of all SWT example snippets see * http://www.eclipse.org/swt/snippets/ */import java.util.*;import org.eclipse.swt.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;public class Snippet179 {public static void main(String[] args) {	Display display = new Display();	Shell shell = new Shell(display);	shell.setLayout(new GridLayout());	final Text text = new Text(shell, SWT.BORDER);	text.setText("YYYY/MM/DD");;		final Calendar calendar = Calendar.getInstance();	text.addListener(SWT.Verify, new Listener() {		boolean ignore;		public void handleEvent(Event e) {			if (ignore) return;			e.doit = false;			StringBuffer buffer = new StringBuffer(e.text);			char[] chars = new char[buffer.length()];			buffer.getChars(0, chars.length, chars, 0);			if (e.character == '\b') {				for (int i = e.start; i < e.end; i++) {					switch (i) {						case 0: /* [Y]YYY */						case 1: /* Y[Y]YY */						case 2: /* YY[Y]Y */						case 3: /* YYY[Y] */ {							buffer.append('Y'); 	break;						}						case 5: /* [M]M*/						case 6: /* M[M] */{							buffer.append('M'); break;						}						case 8: /* [D]D */						case 9: /* D[D] */ {							buffer.append('D'); break;						}						case 4: /* YYYY[/]MM */						case 7: /* MM[/]DD */ {							buffer.append('/'); break;						}						default:							return;					}				}				text.setSelection(e.start, e.start + buffer.length());				ignore = true;				text.insert(buffer.toString());				ignore = false;				text.setSelection(e.start, e.start);				return;			}					int start = e.start;			if (start > 9) return;			int index = 0;			for (int i = 0; i < chars.length; i++) {				if (start + index == 4 || start + index == 7) {					if (chars[i] == '/') {						index++;						continue;					}					buffer.insert(index++, '/');				}				if (chars[i] < '0' || '9' < chars[i]) return;				if (start + index == 5 &&  '1' < chars[i]) return; /* [M]M */				if (start + index == 8 &&  '3' < chars[i]) return; /* [D]D */				index++;			}			String newText = buffer.toString();			int length = newText.length();			StringBuffer date = new StringBuffer(text.getText());			date.replace(e.start, e.start + length, newText);			calendar.set(Calendar.YEAR, 1901);			calendar.set(Calendar.MONTH, Calendar.JANUARY);			calendar.set(Calendar.DATE, 1);			String yyyy = date.substring(0, 4);			if (yyyy.indexOf('Y') == -1) {				int year = Integer.parseInt(yyyy);				calendar.set(Calendar.YEAR, year);			}			String mm = date.substring(5, 7);			if (mm.indexOf('M') == -1) {				int month =  Integer.parseInt(mm) - 1;				int maxMonth = calendar.getActualMaximum(Calendar.MONTH);				if (0 > month || month > maxMonth) return;				calendar.set(Calendar.MONTH, month);			}			String dd = date.substring(8,10);			if (dd.indexOf('D') == -1) {				int day = Integer.parseInt(dd);				int maxDay = calendar.getActualMaximum(Calendar.DATE);				if (1 > day || day > maxDay) return;				calendar.set(Calendar.DATE, day);			} else {				if (calendar.get(Calendar.MONTH)  == Calendar.FEBRUARY) {					char firstChar = date.charAt(8);					if (firstChar != 'D' && '2' < firstChar) return;				}			}			text.setSelection(e.start, e.start + length);			ignore = true;			text.insert(newText);			ignore = false;		}	});	shell.pack();	shell.open();	while (!shell.isDisposed()) {		if (!display.readAndDispatch())			display.sleep();	}	display.dispose();}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -