您特別需要允許Text
是空的,即在你的Listener
爲SWT.Verify
,檢查它是否是空的,然後檢查如果它是一個數字。這將這樣的伎倆:
public static void main(String[] args)
{
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout(SWT.VERTICAL));
Text text = new Text(shell, SWT.BORDER);
text.addListener(SWT.Verify, new Listener()
{
@Override
public void handleEvent(Event event)
{
Text source = (Text) event.widget;
String oldString = source.getText();
String newString = oldString.substring(0, event.start) + event.text + oldString.substring(event.end);
if(newString.length() == 0)
{
return;
}
else
{
try
{
Double.parseDouble(newString); // Or Integer.parseInt(newString);
}
catch (NumberFormatException e)
{
event.doit = false;
}
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
來源
2016-11-11 12:11:03
Baz
請發佈您的驗證監聽器的代碼。 – Baz
對我的回覆有何反饋? – Baz
對不起,沒有機會嘗試代碼,因爲我找到了一種方法來處理它。我把它貼在下面。無論如何,非常感謝。 –