Java 在TitleAreaDialog中输入deleting StyledText

Java 在TitleAreaDialog中输入deleting StyledText,java,swt,jface,Java,Swt,Jface,我有一个奇怪的问题 我在titlearealog中使用StyledText,但当我按enter键确认对话框时(而不是用鼠标单击OK),文本框的内容消失了 我已绑定此侦听器。这可能与此有关吗 使用常规SWTText时,它可以正常工作,但我需要插入符号偏移量 attributeName = new StyledText(container, SWT.BORDER); attributeName.setText("EXTN_"); attributeName.setLayoutData(gridDat

我有一个奇怪的问题

我在
titlearealog
中使用
StyledText
,但当我按enter键确认对话框时(而不是用鼠标单击OK),文本框的内容消失了

我已绑定此
侦听器
。这可能与此有关吗

使用常规SWT
Text
时,它可以正常工作,但我需要插入符号偏移量

attributeName = new StyledText(container, SWT.BORDER);
attributeName.setText("EXTN_");
attributeName.setLayoutData(gridData);
attributeName.setCaretOffset(5);
attributeName.addKeyListener(new KeyListener() {

    @Override
    public void keyReleased(KeyEvent e) {           
        if(!(attributeName.getText().startsWith("EXTN_"))){
            attributeName.setText("EXTN_");
            attributeName.setCaretOffset(5);
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {}
});

有什么想法吗?我很困惑。

这并不能回答为什么
Enter
不起作用的问题。但是为什么不使用
Text
,而不是
StyledText
,而不是
setcaretofset(5)
call
Text.setSelection(5,5)

你说的“它工作正常,但我需要插入符号偏移量”是什么意思?如果我使用SWT文本小部件而不是按“回车”StyledText工作正常,没有bug,我理解那部分。插入符号呢?我使用StyledText的唯一原因是我需要setCareTofSet方法——否则我会使用基本的SWT文本好吧,它没有回答我的问题,但它正是我需要StyledText的目的,所以它很好:)