Group group = new Group(parent, SWT.NONE);
StyledText comment = new StyledText(group, SWT.BORDER_DASH);
This creates a group with a text area inside.
How can I later delete the text (remove it from the screen so that I can replace it with something else)?
From stackoverflow
-
You have to either call
comment.changeParent(newParent)
orcomment.setVisible(false)
to remove/hide it from the Group. I am unsure ifcomment.changeParent(null)
would work but I would give that a try.We do it this way because SWT uses the Composite Pattern.
Thilo : comment.changeParent(null) does indeed raise SWT.ERROR_NULL_ARGUMENT ... -
Use Widget.dispose.
public class DisposeDemo { private static void addControls(final Shell shell) { shell.setLayout(new GridLayout()); Button button = new Button(shell, SWT.PUSH); button .setText("Click to remove all controls from shell"); button.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent event) { } @Override public void widgetSelected(SelectionEvent event) { for (Control kid : shell.getChildren()) { kid.dispose(); } } }); for (int i = 0; i < 5; i++) { Label label = new Label(shell, SWT.NONE); label.setText("Hello, World!"); } shell.pack(); } public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); addControls(shell); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
-
Another option is to use a StackLayout to switch between underlying controls. This prevents you from running into a "widget is disposed" error.
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.