📄 jmtextarea.java.svn-base
字号:
package jm.framework.gui.module;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.im.*;
import javax.swing.*;
import javax.swing.text.*;
import jm.util.*;
public class JMTextArea extends JTextArea {
/**
*
*/
private static final long serialVersionUID = -904181877761838311L;
public static final String CLASS_NAME = "JMTextArea";
/**
* IME偺惂屼傪摿偵峴傢側偄乮僨僼僅儖僩乯
*/
public final static int IME_NONE = 0;
/**
* 僼僅乕僇僗庢摼帪偵IME傪僆僼偵偡傞
*/
public final static int IME_OFF = 1;
/**
* 僼僅乕僇僗庢摼帪偵IME傪僆儞偵偡傞
*/
public final static int IME_ON = 2;
/**
* 暥帤楍挿傪OS昗弨暥帤僙僢僩偵傛傞僶僀僩悢偱敾抐
*/
public final static int LENGTH_BY_NATIVE = 0;
/**
* 暥帤楍挿傪UNICODE僉儍儔僋僞悢偱敾抐乮僨僼僅儖僩乯
*/
public final static int LENGTH_BY_UNICODE = 1;
/**
* 慡偰偺暥帤庬偺擖椡傪嫋壜乮僨僼僅儖僩乯
*/
public final static int REFUSAL_NONE = 0;
/**
* 慡妏暥帤偺擖椡傪嫅斲
*/
public final static int REFUSAL_WIDE = 1;
/**
* 敿妏悢帤偺擖椡傪嫅斲
*/
public final static int REFUSAL_NUMBER = 2;
/**
* 敿妏塸帤偺擖椡傪嫅斲
*/
public final static int REFUSAL_ALPHABET = 4;
/**
* 敿妏婰崋偺擖椡傪嫅斲
*/
public final static int REFUSAL_SYMBOL = 8;
private int piImeMethod; // 僼僅乕僇僗庢摼帪偺IME惂屼曽朄
private int piMaxLineCount; // 嵟戝峴悢偺惂尷
private int piMaxLength; // 扨峴偺嵟戝暥帤楍挿
private int piMaxStringNum; // 嵟戝暥帤悢
private int piLengthMethod; // 暥帤楍挿偺敾掕曽朄
private boolean pbReplaceMode; // 僼僅乕僇僗庢摼帪偺抲姺儌乕僪
private int piRefusalMode; // 擖椡嫅斲暥帤楍偺庬椶
private HashMap<String, String> phRefusal = new HashMap<String, String>(); // 暥帤擖椡偺惂屼曽朄偺曐懚梡
private String SNULL = ""; // 敾抐梡偺侽挿搙偺暥帤楍
private String STRNULL = "null"; // 敾抐梡偺暥帤楍
/**
* JMTextArea
* 僐儞僗僩儔僋僞
*/
public JMTextArea () {
this("", 0, 0, LENGTH_BY_UNICODE, false, IME_NONE);
} // END JMTextArea()
/**
* JMTextArea
* 僐儞僗僩儔僋僞
* @param asText : 昞帵梡偺暥帤楍傪巜掕偡傞丅
*/
public JMTextArea (String asText) {
this(asText, 0, 0, LENGTH_BY_UNICODE, false, IME_NONE);
} // END JMTextArea(String)
/**
* JMTextArea
* 僐儞僗僩儔僋僞
* @param asText : 昞帵偡傞暥帤楍傪巜掕偡傞丅
* @param aiMaxLineCount : 僥僉僗僩僄儕傾偺嵟戝峴悢傪巜掕偡傞丅
* @param aiMaxLength : 扨峴偺嵟戝暥帤楍挿傪巜掕偡傞丅
*/
public JMTextArea (String asText, int aiMaxLineCount, int aiMaxLength) {
this(asText, aiMaxLineCount, aiMaxLength, LENGTH_BY_UNICODE, false,
IME_NONE);
} // END JMTextArea(String, int, int)
/**
* JMTextArea
* 僐儞僗僩儔僋僞
* @param asText : 昞帵偡傞暥帤楍傪巜掕偡傞丅
* @param aiMaxLineCount : 僥僉僗僩僄儕傾偺嵟戝峴悢傪巜掕偡傞丅
* @param aiMaxLength : 扨峴偺嵟戝暥帤楍挿傪巜掕偡傞丅
* @param aiLengthMethod : 暥帤楍偺敾掕曽朄傪巜掕偡傞丅敾掕曽朄偼師偺抣傪巜掕偡傞丅
* 抣 愢柧
* LENGTH_BY_UNICODE UNICODE 僉儍儔僋僞悢偵傛傝敾掕偡傞丅
* LENGTH_BY_NATIVE OS偺昗弨暥帤僙僢僩偵傛傞僶僀僩悢偵傛傝敾掕
* 偡傞丅
*/
public JMTextArea (String asText, int aiMaxLineCount,
int aiMaxLength, int aiLengthMethod) {
this(asText, aiMaxLineCount, aiMaxLength, aiLengthMethod, false,
IME_NONE);
} // END JMTextArea(String, int, int, int)
/**
* JMTextArea
* 僐儞僗僩儔僋僞
* @param asText : 昞帵偡傞暥帤楍傪巜掕偡傞丅
* @param aiMaxLineCount : 僥僉僗僩僄儕傾偺嵟戝峴悢傪巜掕偡傞丅
* @param aiMaxLength : 扨峴偺嵟戝暥帤楍挿傪巜掕偡傞丅
* @param aiLengthMethod : 暥帤楍偺敾掕曽朄傪巜掕偡傞丅敾掕曽朄偼師偺抣傪巜掕偡傞丅
* 抣 愢柧
* LENGTH_BY_UNICODE UNICODE 僉儍儔僋僞悢偵傛傝敾掕偡傞丅
* LENGTH_BY_NATIVE OS偺昗弨暥帤僙僢僩偵傛傞僶僀僩悢偵傛傝敾掕
* 偡傞丅
* @param abMode : 抲姺儌乕僪傪巜掕偡傞丅抲姺儌乕僪偵偼師偺抣傪巜掕偡傞
* 抣 愢柧
* true 僼僅乕僇僗庢摼帪偵慡僥僉僗僩偑慖戰忬懺偵側傞丅
* false 摿偵惂屼偼峴傢側偄丅
*/
public JMTextArea (String asText, int aiMaxLineCount,
int aiMaxLength, int aiLengthMethod, boolean abMode) {
this(asText, aiMaxLineCount, aiMaxLength, aiLengthMethod, abMode,
IME_NONE);
} // END JMTextArea(String, int, int, int, boolean)
/**
* JMTextArea
* 僐儞僗僩儔僋僞
* @param asText : 昞帵偡傞暥帤楍傪巜掕偡傞丅
* @param aiMaxLineCount : 僥僉僗僩僄儕傾偺嵟戝峴悢傪巜掕偡傞丅
* @param aiMaxLength : 扨峴偺嵟戝暥帤楍挿傪巜掕偡傞丅
* @param aiLengthMethod : 暥帤楍偺敾掕曽朄傪巜掕偟傑偡丅敾掕曽朄偼師偺抣傪巜掕偡傞丅
* 抣 愢柧
* LENGTH_BY_UNICODE UNICODE 僉儍儔僋僞悢偵傛傝敾掕偡傞丅
* LENGTH_BY_NATIVE OS偺昗弨暥帤僙僢僩偵傛傞僶僀僩悢偵傛傝敾掕
* 偡傞丅
* @param abMode : 抲姺儌乕僪傪巜掕偡傞丅抲姺儌乕僪偵偼師偺抣傪巜掕偡傞
* 抣 愢柧
* true 僼僅乕僇僗庢摼帪偵慡僥僉僗僩偑慖戰忬懺偵側傞丅
* false 摿偵惂屼偼峴傢傟傑偣傫丅
* @param aiImeMethod : IME偺惂屼曽朄傪巜掕偡傞丅惂屼曽朄偼師偺抣傪巜掕偡傞丅
* 抣 愢柧
* IME_NONE IME 惂屼傪摿偵峴傢側偄丅
* IME_ON 僼僅乕僇僗庢摼帪偵IME傪ON偵僙僢僩偡傞丅
* IME_OFF 僼僅乕僇僗庢摼帪偵IME傪OFF偵僙僢僩偡傞丅
*/
public JMTextArea (String asText, int aiMaxLineCount, int aiMaxLength,
int aiLengthMethod, boolean abMode, int aiImeMethod) {
super();
enableEvents(AWTEvent.KEY_EVENT_MASK); // 僀儀儞僩偺憲怣
setText(asText); // 僨傿僼僅僩僥僉僗僩傪巜掕偡傞
piImeMethod = aiImeMethod; // 僼僅乕僇僗庢摼帪偺IME惂屼曽朄傪巜掕偡傞
piMaxLineCount = aiMaxLineCount; // 嵟戝峴悢偺巜掕
piMaxLength = aiMaxLength; // 扨峴偺嵟戝暥帤楍挿偺巜掕
piLengthMethod = aiLengthMethod; // 暥帤楍挿偺敾掕曽朄偺巜掕
pbReplaceMode = abMode; // 僼僅乕僇僗庢摼帪偺抲姺儌乕僪偺巜掕
piRefusalMode = REFUSAL_NONE; // 擖椡嫅斲暥帤楍傪巜掕偡傞
setDocument(new PlainDocument()); // 僨傿僼僅僩僪僉儏儊儞僩傪巜掕偡傞
String[] psRefusalVal = {
"0", "1", "2", "12", "4", "14", "24", "124", "8", "18", "28", "128",
"48", "148", "248", "1248"};
for (int i = 0;
i <=
(REFUSAL_WIDE + REFUSAL_NUMBER + REFUSAL_ALPHABET + REFUSAL_SYMBOL);
i++) {
phRefusal.put(SNULL + i, psRefusalVal[i]);
} // END FOR
setDefault();
this.setUI(new pTextAreaUI());
} // END JMTextArea(String, int, int, int, boolean, int )
private void setDefault () {
// this.setBorder(JMItemCode.BR_TEXT);
this.setFont(JMItemCode.FT_TEXTAREA);
this.setIMEMethod(IME_OFF);
this.setLengthMethod(LENGTH_BY_NATIVE);
// this.addKeyListener(new EnterKeyDeal());
}
public void setHelp (String asHelp) {
this.setToolTipText(asHelp);
}
/**
* getIMEMethod
* IME偺惂屼曽朄傪庢摼偡傞丅
* @return int : IME惂屼曽朄偑曉傞丅栠傝抣偼師偺堄枴偑偁傞丅
* 栠傝抣 愢柧
* IME_NONE IME 惂屼傪摿偵峴傢側偄丅
* IME_ON 僼僅乕僇僗庢摼帪偵IME傪ON偵巜掕偡傞丅
* IME_OFF 僼僅乕僇僗庢摼帪偵IME 傪OFF偵巜掕偡傞丅
*/
public int getIMEMethod () {
return piImeMethod;
} // END getIMEMethod()
/**
* getLength
* 僥僉僗僩僄儕傾偵擖椡偝傟偰偄傞暥帤楍挿傪庢摼偡傞
* @return int : 僥僉僗僩僄儕傾慡懱偺暥帤楍挿偑曉傞丅
* 惉岟偟偨応崌偼丄擖椡偝傟偰偄傞僥僉僗僩僄儕傾偺暥帤楍挿傪庢摼偡傞丅
* 幐攕偟偨応崌偼-1偑曉傞丅
*/
public int getLength () {
try {
// 暥帤楍挿傪UNICODE僉儍儔僋僞悢偱敾抐
if (piLengthMethod == LENGTH_BY_UNICODE) {
return getDocument().getLength();
}
// 暥帤楍挿傪OS昗弨暥帤僙僢僩偵傛傞僶僀僩悢偱敾抐
else {
return getText().getBytes().length;
} // END IF
} catch (Exception ex) { // END TRY
//椺奜偑敪惗偟偨応崌丄傑偨偼僄儔乕偑敪惗偟偨応崌偼-1傪曉傞丅
return -1;
} // END CATCH
} // END getLength()
/**
* getLength
* 僥僉僗僩僄儕傾偵偍偄偰巜掕偝傟偨峴偺暥帤楍挿傪庢摼偡傞丅
* @param aiLineNum : 暥帤楍悢傪庢摼偡傞峴傪巜掕偡傞丅
* @return int : 惉岟偟偨応崌丄巜掕偝傟偨峴偺暥帤楍挿偑曉傞丅
* 幐攕偟偨応崌偼-1偑曉傞丅
*/
public int getLength (int aiLineNum) {
try {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -