Я пишу представление для приложения RCP Eclipse и пытаюсь установить размер отображения вкладок в текстовом поле ввода. Текстовый виджет объявляется как:
Text txtInput;
txtInput = new Text(inputHolder, SWT.SINGLE);
Попытка установить tabsize (до 4 пробелов, а не по умолчанию 8), используя txtInput.setTabs(4);
ничего не делает и просматривает источник для виджета " Text
есть строка, которая запрещает изменение табуляции для виджетов одной строки.
void setTabStops (int tabs) {
if ((style & SWT.SINGLE) != 0) return;
//rest of code to change tabStopsize
}
Я попытался установить Text
виджета, чтобы иметь SWT.MULTI
стиль и изменения TabSize, как ожидалось, но я не хочу многострочный ввод.
В чем причина ограничения на однострочные входы и существует ли какой-либо способ?
благодаря
Как уже было установлено в комментариях, это невозможно сделать с помощью Text
и SWT.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();
}
Работает отлично. Поддержка одной линии и вкладки.
addTraverseListener
и устанавливаете его не для перемещения (используяe.doit = false;
для TraverseEvent e)