📄 texteditcanvas.java
字号:
package inline.ui;
import java.util.*;
import javax.microedition.lcdui.*;
import inline.ui.ce.CanvasElement;
import inline.ui.le.SelectionStringElement;
import inline.sys.*;
public class TextEditCanvas extends ListFormCanvas
{
private String text;
private int selidx;
private boolean insel;
private boolean upcase;
private int lastKeyCode;
private static final char[][] chartable =
{{' ','0'},
{'.','?','!',',','@','\'','-','_',':',';',
'(',')','&','"','~','1','0','$',
'+','*','/','\\','[',']','=','>',
'<','#'},
{'A','B','C','2'},
{'D','E','F','3'},
{'G','H','I','4'},
{'J','K','L','5'},
{'M','N','O','6'},
{'P','Q','R','S','7'},
{'T','U','V','8'},
{'W','X','Y','Z','9'}
};
public TextEditCanvas(HostCanvas pprevious, String txt)
{
super(pprevious,Base.getText(0x0605));
Vector vct = new Vector();
list.setLines(vct);
list.setFastScroll(false);
selidx = -1;
upcase = true;
lastKeyCode = (int)'1';
insel = false;
setText(txt);
}
public void selectPreview(Object obj)
{
super.selectPreview(obj);
if (obj instanceof SelectionStringElement)
{
if (insel)
{
SelectionStringElement se = (SelectionStringElement)obj;
selidx++;
setText(se.getString());
insel = false;
}
else
{
updateList(lastKeyCode);
}
}
}
protected void submit()
{
if (insel)
{
setText(list.getSelectedText());
}
super.submit();
}
private void updateList(int keyCode)
{
int idx = keyCode-(int)'0';
if (idx<chartable.length)
{
char[] th = chartable[idx];
Vector vct = new Vector();
String vx;
for(int i=0;i<th.length;i++)
{
vx = "" + th[i];
if (!upcase) vx = vx.toLowerCase();
vx = text.substring(0,selidx)+vx+
text.substring(selidx);
SelectionStringElement sse = new SelectionStringElement(vx);
sse.SetSelection(selidx,1);
vct.addElement(sse);
}
insel = true;
list.setLines(vct);
list.repaint();
lastKeyCode = keyCode;
}
}
private void setText(String ttext)
{
text = ttext;
if (selidx==-1) selidx = text.length();
Vector vct = new Vector();
SelectionStringElement sse = new SelectionStringElement(text);
sse.SetSelection(selidx,1);
vct.addElement(sse);
list.setLines(vct);
list.repaint();
}
public String getText()
{
return text;
}
protected boolean keyPreview(int keyCode)
{
if (keyCode>=(int)'0' && keyCode<=(int)'9')
{
if (!insel)
{
updateList(keyCode);
}
else
{
if (keyCode==(int)'0')
{
upcase = !upcase;
int tli = list.getSelectedIndex();
updateList(lastKeyCode);
list.setSelectedIndex(tli);
}
else
{
text = list.getSelectedText();
selidx++;
updateList(keyCode);
}
}
}
if (!insel && keyCode == CanvasElement.LEFT && selidx>0)
{
selidx--;
setText(text);
}
if (!insel && keyCode == CanvasElement.RIGHT && selidx<text.length())
{
selidx++;
setText(text);
}
if (!insel && keyCode == (int)'*' && selidx>0)
{
// backspace
text = text.substring(0, selidx-1) + text.substring(selidx);
selidx--;
setText(text);
}
if (!insel && keyCode == (int)'#' && selidx<text.length())
{
// delete
text = text.substring(0, selidx) + text.substring(selidx+1);
setText(text);
}
if (insel && keyCode == CanvasElement.LEFT )
{
lastKeyCode--;
if (lastKeyCode<(int)'0') lastKeyCode = (int)'9';
updateList(lastKeyCode);
}
if (insel && keyCode == CanvasElement.RIGHT)
{
lastKeyCode++;
if (lastKeyCode>(int)'9') lastKeyCode = (int)'0';
updateList(lastKeyCode);
}
if (insel && keyCode == '0')
{
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -