2017-02-20 6 views
0

У меня есть элемент управления Text и GridLayout, связанный с ним. Когда я его создаю, текстовое поле создается с определенной шириной. Когда я ввожу текст в текстовое поле и сохраняю, я обновляю модель. Опять же, если я закрываю этот конкретный вид и снова открываю его, текстовое поле расширяется с шириной текста, введенного ранее. Как ограничить это и предоставить определенную ширину текстовому полю, чтобы он не расширялся дальше.Как ограничить размер текстового поля в swt?

ответ

2

Используйте поле widthHint поля GridData, чтобы указать ширину элемента управления.

В простейшем это было бы:

Text text = new Text(....); 

GridData data = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); 

data.widthHint = 100; // Some width 

text.setLayoutData(data); 

Если вы делаете это в класс, производный от Dialog вы можете использовать

data.widthHint = convertWidthInCharsToPixels(10); // Some number of characters 

указать ширину в символах.

Вне диалога вы можете использовать:

GC gc = new GC(text); 

gc.setFont(text.getFont()); 

FontMetrics fontMetrics = gc.getFontMetrics(); 

data.widthHint = fontMetrics.getAverageCharWidth() * chars; 

gc.dispose(); 
+0

Как я могу достичь ту же функциональность convertWidthInCharsToPixels (10), без получения Dialog класса –

+1

Добавлено кода, чтобы сделать обугленный ширин известкова к ответу –

Смежные вопросы