📄 jmtextarea.java
字号:
* setLengthMethod
* 暥帤楍挿偺敾掕曽朄傪愝掕偡傞丅
* @param aiLengthMethod : 暥帤楍偺敾掕曽朄傪巜掕偡傞丅敾掕曽朄偼師偺抣傪巜掕偡傞丅
* 抣 愢柧
* LENGTH_BY_UNICODE UNICODE 僉儍儔僋僞悢偵傛傝敾掕偡傞丅
* LENGTH_BY_NATIVE OS偺昗弨暥帤僙僢僩偵傛傞僶僀僩悢偵傛傝敾掕偡傞丅
* @return boolean : 惉岟偺帪偵true傪曉傞丄堷悢偑晄惓側応崌偵false傪曉傞丅
*/
public boolean setLengthMethod (int aiLengthMethod) {
if (aiLengthMethod != LENGTH_BY_UNICODE &&
aiLengthMethod != LENGTH_BY_NATIVE) {
return false;
} // END IF
piLengthMethod = aiLengthMethod;
return true;
} // END setLengthMethod(int)
/**
* setMaxLength
* 擖椡壜擻側嵟戝暥帤楍挿傪愝掕偡傞丅
* @param aiMaxLength : 嵟戝暥帤楍挿傪巜掕偡傞丅
* @return boolean : 惉岟偺帪偵true傪曉傞丄堷悢偑晄惓側応崌偵false傪曉傞丅
*/
public boolean setMaxLineLength (int aiMaxLength) {
if (aiMaxLength < 0) {
return false;
} // END IF
piMaxLength = aiMaxLength;
this.setLineWrap(true);
return true;
} // END setMaxLength(int)
/**
* setMaxLineCount
* 僥僉僗僩僄儕傾偵擖椡偱偒傞嵟戝峴悢傪愝掕偡傞丅
* @param aiMaxLineCount : 嵟戝峴悢傪巜掕偡傞丅
* @return boolean : 惉岟偺帪偺true傪曉傞丄堷悢偑晄惓側応崌偵false傪曉傞丅
*/
public boolean setMaxLineCount (int aiMaxLineCount) {
if (aiMaxLineCount < 0) {
return false;
} // END IF
piMaxLineCount = aiMaxLineCount;
setRows(aiMaxLineCount); //僇儔儉悢偺峏怴
return true;
} // END setMaxLineCount(int)
/**
* setRefusalCharacterMode
* 擖椡嫅斲偡傞暥帤僙僢僩儌乕僪傪愝掕偡傞丅
* @param aiRefusalMode : 擖椡傪嫅斲偡傞暥帤僙僢僩儌乕僪傪巜掕偡傞丅
* 暥帤僙僢僩儌乕僪偼師偺抣偺慻傒崌傢偣偱巜掕偡傞丅
* 抣 愢柧
* REFUSAL_NONE 慡偰偺暥帤庬傪嫋壜偟偰偄傞丅
* REFUSAL_WIDE 慡妏暥帤偺擖椡傪嫅斲偟偰偄傞丅
* REFUSAL_NUMBER 敿妏悢帤偺擖椡傪嫅斲偟偰偄傞丅
* REFUSAL_ALPHABET 敿妏塸帤偺擖椡傪嫅斲偟偰偄傞丅
* REFUSAL_SYMBOL 敿妏婰崋偺擖椡傪嫅斲偟偰偄傞丅
* @return boolean : 惉岟偺帪偵true傪曉傞丄堷悢偑晄惓側応崌偵false傪曉傞丅
*/
public boolean setRefusalCharacterMode (int aiRefusalMode) {
if (aiRefusalMode < REFUSAL_NONE ||
aiRefusalMode > REFUSAL_WIDE + REFUSAL_NUMBER +
REFUSAL_ALPHABET + REFUSAL_SYMBOL) {
return false;
} // END IF
piRefusalMode = aiRefusalMode;
return true;
} // END setRefusalCharacterMode(int)
/**
* setReplaceMode
* 抲姺儌乕僪傪愝掕偡傞丅
* @param abMode : 抲姺儌乕僪傪巜掕偡傞丅
*/
public void setReplaceMode (boolean abMode) {
pbReplaceMode = abMode;
} // END setReplaceMode(boolean)
/**
* setMaxStringNum
* 嵟戝暥帤悢偺愝掕
* @param aiMaxStringNum : 巜掕偟偨嵟戝暥帤悢
* @return boolean
*/
public boolean setMaxStringNum (int aiMaxStringNum) {
if (aiMaxStringNum < 0) {
return false;
}
this.piMaxStringNum = aiMaxStringNum;
return true;
}
/**
* mChkStr
* <PRE>
* 暥帤楍偑Null偐斲偐傪僠僃僢僋
* </PRE>
*
* @param asVal : 僠僃僢僋偡傞暥帤楍
* @return String : <code>Null</code>丄<code>"null"</code>丄<code>""</code>丂
* 偺応崌<code>""</code>丄偦偺懠応崌String傪曉傞
*/
private String mChkStr (String asVal) {
if (asVal == null) {
return SNULL;
} // END IF
if (asVal.trim().equals(STRNULL)) {
return SNULL;
} // END IF
if (asVal.trim().equals(SNULL)) {
return SNULL;
} // END IF
return asVal.trim();
} // END mChkStr(String)
/**
* ChkSignAlpha
* 敿妏婰崋僠僃僢僋
* @param asval : 僠僃僢僋偡傞暥帤楍
* @return true : YES ; false : NO
*/
private boolean mChkSignAlpha (String asval) {
final String psHanjh = " `~!@#$%^&*()_+|-=[]{}<>/?;':\"\\,.";
for (int i = 0; i < psHanjh.length(); i++) {
String pa = psHanjh.substring(i, i + 1);
int pis = asval.indexOf(pa);
if (pis != -1) {
return true;
} // END IF
} // END FOR
return false;
} // END ChkSignAlpha(String)
/**
* calculateLines
* 暥帤楍偺峴悢傪寁嶼偡傞
* @param text : 寁嶼偡傞暥帤楍
* @return int : 寁嶼偟偨峴悢
*/
private int calculateLines (String text) {
int lines = 1;
JMVector<String> arr = new JMVector<String>();
//String lineWrap = System.getProperty("line.separator");
String lineWrap = "\n";
int pos = -1;
while ((pos = text.indexOf(lineWrap)) >= 0) {
arr.add(text.substring(0, pos));
text = text.substring(pos + 1);
} // END WHILE
arr.add(text);
lines = arr.size();
int max = getMaxLineLength();
java.awt.FontMetrics fm = getFontMetrics(getFont());
for (int i = 0; i < arr.size() && this.getLineWrap(); i++) {
String s = (String) arr.get(i);
int len = s.length();
// 扨峴暥帤悢偺惂尷偑柍偟
if (max == 0) {
int curLen = 0;
for (int j = 0; j < len; j++) {
int chrLen = fm.stringWidth(s.substring(j, j + 1));
if (curLen + chrLen > getWidth()) {
++lines;
curLen = chrLen;
} else {
curLen += chrLen;
} // END IF
} // END FOR
}
// 扨峴暥帤悢偺惂尷偑桳傝
else {
int mod = len % max;
lines += mod > 0 ? (len - mod) / max : len / max - 1;
} // END IF
} // END FOR
return lines;
}
/**
* <p>pTextUI</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 俶俤俠僜僼僩噴</p>
*/
class pTextAreaUI extends javax.swing.plaf.basic.BasicTextAreaUI {
/**
* create
* 價儏乕偺惗惉
* @param elem : 僄儗儊儞僩
* @return丂惗惉偟偨價儏乕
*/
public View create (Element elem) {
JTextComponent c = getComponent();
if (c instanceof JTextArea) {
JTextArea area = (JTextArea) c;
View v;
if (area.getLineWrap()) {
v = new pWrappedPlainView(elem, area.getWrapStyleWord());
} else {
v = new PlainView(elem);
} // END IF
return v;
} // END IF
return null;
} // END create(Element)
} // END pTextAreaUI
/**
* <p>pWrappedPlainView</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 俶俤俠僜僼僩噴</p>
*/
class pWrappedPlainView extends WrappedPlainView {
/**
* pWrappedPlainView
*
* @param elem : 僄儗儊儞僩
* @param b :
*/
public pWrappedPlainView (Element elem, boolean b) {
super(elem, b);
} // END pWrappedPlainView(Element, boolean)
/**
* calculateBreakPosition
*
* @param p0 : 埵抲0
* @param p1 : 埵抲1
* @return : 庢摼偟偨埵抲
*/
protected int calculateBreakPosition (int p0, int p1) {
int p;
if (getMaxLineLength() > 0) {
p = p0 + Math.min(getMaxLineLength(), p1 - p0);
} else {
p = super.calculateBreakPosition(p0, p1);
}
return p;
} // END calculateBreakPosition(int, int)
} // END pWrappedPlainView
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -