将标签更改为 Textbox/Button

Change Label into Textbox/Button

我想创建一个对话框 window,通过使用包含相关信息的标签,以视觉上令人愉悦的方式显示用户的个人资料(例如姓名、头像、性别等)。同时,我想展示一个编辑按钮,将标签转换为文本框或按钮,允许更改名称或头像。

如何使用 SWT 实现这一点?解决这个问题的最佳策略是什么?

您可以使用 Text 然后将 setEditable(boolean) 设置为 enable/disable 编辑来自 SWT.Selection Listener 的文本框 Button:

public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Whosebug");
    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 并拥有相同 UI 的两个版本(或只是其中的一部分),并在按下按钮时在它们之间切换。