首先说明的是这个IP输入的文本框SWT来做的,是这个软件的一个类,整个软件也是SWT做的。IP输入框的基本框架已经做好,在Composite里放了4个文本框和3个Label,已经写好setText和getText方法,问题出在KeyListener上,第一找不出用什么函数来获取KeyPressed的值,第二SWT的Text没有requestFocus方法,第三因为第一个问题所以不知道要怎么写来限制其只能输入数字,麻烦大家帮帮忙,谢谢!
或者有哪位朋友有更好的办法也请告诉我,谢谢了,小弟不胜感激!
或者有哪位朋友有更好的办法也请告诉我,谢谢了,小弟不胜感激!
text.addKeyListener(new KeyAdapter(){
@Override
public void keyReleased(KeyEvent e) {
handleKeyReleased(e);
}
});
}
private void handleKeyReleased(KeyEvent e){
if(e.character == SWT.DEL&&e.stateMask==0){
//do something here }
}
2. 第二SWT的Text没有requestFocus方法 txt1.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
final Text t = (Text)e.getSource();
t.getDisplay().asyncExec (new Runnable () {
public void run () {
t.setSelection(0, 5);
t.setFocus();
}
});
}
}); 还有就是可以试试 MaskFormatter
public void keyPressed(KeyEvent e) {
e.character就是所按键对应的char
}
});
public void handleEvent (Event e) {
String string = e.text;
char [] chars = new char [string.length ()];
string.getChars (0, chars.length, chars, 0);
for (int i=0; i<chars.length; i++) {
if (!('0' <= chars [i] && chars [i] <= '9')) {
e.doit = false;
return;
}
}
}
});
import javax.swing.text.PlainDocument;
import javax.swing.text.BadLocationException;
import javax.swing.text.AttributeSet; public class VlanField extends JTextField{
private static final long serialVersionUID = 1L;
public VlanField()
{
super();
setDocument(new IntegerDocument());
}
public VlanField(int value)
{
this();
this.setValue(value);
}
public void setValue(int value)
{
super.setText(String.valueOf(value));
}
public void setValue(String value)
{
super.setText(value);
}
public int getValue()
{
try
{
return Integer.parseInt(super.getText());
}
catch(Exception e)
{
return 0;
}
}
/**
* @deprecated
*/
public void setText(String t)
{
try
{
Integer.parseInt(t);
super.setText(t);
}
catch(Exception e)
{
}
}
private class IntegerDocument extends PlainDocument
{
private static final long serialVersionUID = 1L;
public void insertString(int offset,String s,AttributeSet attributeSet) throws BadLocationException
{
boolean canInsert = false;
try
{
Integer.parseInt(s);
canInsert = true;
}
catch(Exception ex)
{
}
if(true == canInsert)
{
super.insertString(offset,s,attributeSet);
}
}
} }
public void verifyText(VerifyEvent e) {
String s = e.text;
// Pattern pattern = Pattern.compile("^[-0-9.]"); //可以输入减号
Pattern pattern = Pattern.compile("^[0-9.]");
Matcher match = pattern.matcher(s);
if (match.matches()) {
e.doit = true;
newText(e.start, s);
} else if (s.length() > 0) {
e.doit = false;
} else {
e.doit = true;
}
}
});
{
public void keyPressed(KeyEvent event)
{
String str = Character.toString(event.character);
event.doit = Character.toString(event.character).matches("^[0-9x]{18}");
}
});
正确与否?为什么执行不了?哪位高手给指点哈,谢谢