SWT композит - проблема перерисовки
У меня есть составной элемент, который изначально имеет метку. Теперь я вызываю dispose на it (метку) и создаю другую метку в том же контейнере (составной вяз), но я не вижу новый текст. Это заставляет меня задуматься о том, как включить перерисовку в композите, чтобы новый ярлык (или любой другой компонент, который я мог создать) отображался вместо старого. Вот код, который у меня есть (разделен на модульный тест для перерисовки композита)
<code>private Label createLabel( Composite parent) { Label label = new Label(parent, SWT.NONE); label.setAlignment(SWT.CENTER); label.setLayoutData( new GridData( SWT.CENTER, SWT.CENTER, true, true) ); return label; } private void changeText() { assert testCell != null : "Please initialize test cell"; testCell.getChildren()[0].dispose(); Label l = createLabel(testCell); l.setText("New TexT"); testCell.redraw(); } private void draw() { Display display = new Display(); shell = new Shell(display); shell.setLayout(new GridLayout(2,false)); testCell = new Composite(shell,SWT.BORDER); testCell.setLayout(new GridLayout()); Label l = createLabel(testCell); l.setText("Old Text"); Composite btnCell = new Composite(shell,SWT.NONE); btnCell.setLayout(new GridLayout()); Button b = new Button(btnCell, SWT.PUSH); b.setText("Change"); b.addListener(SWT.MouseDown, new Listener() { public void handleEvent(Event e) { changeText(); } }); </code>
Как вы можете видеть, я вызываю перерисовку в композите после добавления нового элемента. Кроме того, я проверил, что после вызова dispose testCell.getChildren (). Length возвращает 0, как и ожидалось, и когда я создаю новую метку, я получаю то же выражение для возврата 1, проверяя, что новый элемент действительно получает добавлен в родительский составной контейнер Я что-то здесь упускаю?