将标签更改为 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 的两个版本(或只是其中的一部分),并在按下按钮时在它们之间切换。
我想创建一个对话框 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 的两个版本(或只是其中的一部分),并在按下按钮时在它们之间切换。