在单行SWT文本小部件中设置选项卡大小

时间:2014-05-28 14:25:43

标签: java swt eclipse-rcp

我正在为Eclipse RCP应用程序编写视图,并且我正在尝试在文本输入字段中设置选项卡的显示大小。文本小部件声明为:

Text txtInput;
txtInput = new Text(inputHolder, SWT.SINGLE);

尝试使用txtInput.setTabs(4);设置tabsize(为4个空格而不是默认值8)并没有做任何事情,并查看Text小部件的source有一行来阻止标签化单行小部件被更改。

void setTabStops (int tabs) {
    if ((style & SWT.SINGLE) != 0) return; 
    //rest of code to change tabStopsize
}

我尝试将Text小部件设置为SWT.MULTI样式,并且标签大小按预期更改但我不想要多行输入。

对单线输入进行限制的原因是什么?有什么方法吗?

由于

1 个答案:

答案 0 :(得分:1)

正如评论中已经确定的那样,使用TextSWT.SINGLE无法做到这一点。

,您只需使用StyledText代替:)

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new GridLayout(1, false));

    StyledText text = new StyledText(shell, SWT.SINGLE | SWT.BORDER);
    text.addListener(SWT.Traverse, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            e.doit = false;
        }
    });
    text.setTabs(4);

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

工作得很好。单行和制表键支持。