2015-08-17 5 views
0

Я хотел бы создать диалоговое окно, которое показывает профиль пользователя (например, имя, аватар, секс и т. Д.) Визуально приятным способом, используя метки, содержащие соответствующую информацию. В то же время я хотел бы показать кнопку редактирования, которая преобразует метки в текстовые поля или кнопки, позволяющие изменить имя или аватар.Изменить ярлык в текстовое поле/кнопку

Как я могу реализовать это с помощью SWT? Какова была бы лучшая стратегия для этого?

ответ

1

Вы можете использовать Text, а затем установить setEditable(boolean) включить/отключить редактирование текстового окна из SWT.SelectionListener из Button:

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

    // Create a read-only text field 
    final Text text = new Text(shell, SWT.BORDER); 
    text.setEditable(false); 
    text.setText("Some text here"); 

    Button button = new Button(shell, SWT.PUSH); 
    button.setText("Change"); 
    button.addListener(SWT.Selection, new Listener() 
    { 
     @Override 
     public void handleEvent(Event event) 
     { 
      text.setEditable(!text.getEditable()); 
     } 
    }); 

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

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

В качестве альтернативы, вы можете использовать StackLayout и иметь два версии одного и того же интерфейса (или только его частей) и переключаться между ними при нажатии кнопки.

+0

Редактируемые текстовые поля на самом деле не то, что я искал, поскольку я пытаюсь избавиться от «формы» внешнего вида и ощущения диалога. Спасибо за подсказку с помощью StackLayout, хотя я даже не подумал об этом. Это кажется идеальным решением для меня! – pfolta

+0

@pfolta Ну, тогда вам придется либо использовать идею 'StackLayout', либо динамически размещать/добавлять виджеты. – Baz

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