2015-07-13 2 views
0

Мне нужна ваша помощь ... У меня есть контейнер 2 Composite. Один из них с 2 переключателями, первый переключатель - ДИАГРАММА, а другой - ОТЧЕТ. Когда пользователь выбирает диаграмму, диаграмма загружается во второй составной, все нормально, но я не знаю, как удалить диаграмму, когда пользователь выбирает «отчет», есть ли способ очистить или удалить его? Я попробовал, но я не могу найти решение. Спасибо!RCP SWT Eclipse - Очистить составной контейнер

contenedor_chart = new Composite(parent, SWT.NONE); 
     contenedor_chart.setLayout(new FillLayout()); 
     FillLayout filllayout = new FillLayout(); 
     filllayout.marginWidth = 50; 
     filllayout.marginHeight = 50; 

     contenedor_chart.setLayout(filllayout); 
     CategoryDataset dataset = cbch.createDataset(); 
     JFreeChart chart = cbch.createChart(dataset); 
     final ChartPanel chartPanel = new ChartPanel(chart); 
     chartPanel.setPreferredSize(new java.awt.Dimension(400, 170)); 
     new ChartComposite(contenedor_chart, SWT.NONE, chart, true); 
+0

Какая диаграмма? Как организованы компоненты? Отправьте соответствующий код. – Baz

+0

Спасибо, Baz, я положил код –

ответ

2

Вы можете просто избавиться от контроля вы больше не хотите, вызвав dispose метод:

Control chart = ... chart control 

chart.dispose(); 

Просто вызова dispose не восстановить пространство, используемое элементом управления, если не заставить управления быть снова вылетел. Например, чтобы выложить весь Shell использование:

Shell shell = ... current shell 

shell.pack(); 

который выкладывает управления в оболочке и регулирует размер оболочки, чтобы соответствовать.

Если вы хотите повторно использовать график, то не вызывайте dispose или pack. Вы можете просто позвонить setVisible(false) на элемент управления.

Вы также можете использовать StackLayout для компоновки нескольких элементов управления в Composite или использовать Eclipse PageBook.

+0

Спасибо, Грег, я пробовал с chart.dispose(), и он работает, но теперь я не знаю, как получить диаграмму снова, я имею в виду, если я выберу диаграмму переключателя «диаграмма» «после того, как я выбрал« отчет », диаграмма больше не появляется. Я попробовал метод «пакет», но, полагаю, я что-то делаю неправильно. Я поместил часть кода ---> if (boton_listados.isFocusControl()) {chart.dispose();} –

+0

Если вы вызываете 'dispose', вы не можете использовать элемент управления снова. Если вы просто хотите скрыть его, используйте 'setVisible (false)' (и не называйте 'pack'). –

+0

Да, я тоже пытался с setVisible (false), но я думаю, что это не самое правильное, потому что оба переключателя должны показывать разные вещи, я не знаю, лучший ли это для этого. –

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