Как удалить нынешние barchart (jfreechart), отображаемый и отображаю новый Barchart в том же представлении плагина Eclipse RCP? -- java поле с участием eclipse поле с участием jfreechart поле с участием rcp поле с участием bar-chart пол Связанный проблема

How to delete the present barchart(jfreechart) displayed and display new barchart in a same view of eclipse RCP plugin?


0
vote

проблема

русский

Я создаю Barchart с видом на плагин RCP. Данные, которые будут отображаться на графике, поставляется из файла базы данных SQLite3. Код, который я написал, отображает Barchart на вид на основе даты, предоставляемой в качестве ввода, которую мы можем выбрать с помощью Calender. SQLite3 подключается к файлу базы данных и запросы базы данных на основе даты и получает данные Barchart. JfreeChart используется для создания Barchart и ChartComposite отображает его на вид.

Проблема в том, что я выбираю несколько дат один за другим и попросить отобразить, все графики отображаются на одном представлении, что мне не требуют. Вывод должен быть следующим, Когда я выбираю дату второй раз, настоящий график должен быть удален, и новый график должен отображаться. Я пытался добавить утилизацию () в код, но не работает.

Ниже приведен мой код для того же,

Открытый класс Barchartdisplay продлевает ViewPart {

 <код> Text searchfield = null; String path = SelectDataBase.path; public static int error=0; public static int info=0; public static int critical=0; public static int warning=0;    public BarChartDisplay() {     // TODO Auto-generated constructor stub }  @Override public void createPartControl(Composite parent) {     // TODO Auto-generated method stub      //Composite A:     final Composite mainComposite = new Composite(parent, SWT.NONE);     GridData mainLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);     mainLayoutData.horizontalSpan = 1;     mainComposite.setLayoutData(mainLayoutData);     GridLayout outerLayout = new GridLayout();     outerLayout.marginTop = 30;     outerLayout.marginLeft = 20;     outerLayout.marginRight = 20;     mainComposite.setLayout(outerLayout);      //Composite B:     final Composite selectComposite = new Composite(mainComposite, SWT.NONE);     GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);     layoutData.horizontalSpan = 1;     selectComposite.setLayoutData(layoutData);     GridLayout layout = new GridLayout(4, false);     selectComposite.setLayout(layout);      //Composite C:     final Composite barchartComposite = new Composite(mainComposite, SWT.NONE);     GridData layoutData2 = new GridData(SWT.FILL, SWT.FILL, true, true);     layoutData2.horizontalSpan = 1;     barchartComposite.setLayoutData(layoutData2);     GridLayout layout2 = new GridLayout(1, false);     barchartComposite.setLayout(layout2);        final CalendarCombo ccombo = new CalendarCombo(selectComposite, SWT.READ_ONLY | SWT.FLAT);     GridData layoutDataCal = new GridData(150, 40);      ccombo.computeSize(SWT.DEFAULT, SWT.DEFAULT);     ccombo.showCalendar();     ccombo.setLayoutData(layoutDataCal);       org.eclipse.swt.widgets.Button button = new org.eclipse.swt.widgets.Button(selectComposite, SWT.PUSH);     button.setText("Go");    button.addListener(SWT.Selection, new Listener() {     public void handleEvent(Event e) {       switch (e.type) {       case SWT.Selection:          error = 0;         info = 0;         warning = 0;         critical = 0;          DB db = new DB();         Connection conn = null;         conn = db.ConnTable(path);         Statement statement;         try {             statement = conn.createStatement();             String query = null;             String textfielddata = ccombo.getDateAsString();              System.out.println(textfielddata);              query = "select priority from log where creation_date = '"+ textfielddata +"'";               System.out.println(query);             ResultSet rs = statement.executeQuery(query);              while (rs.next()) {                  int  prioritydata = rs.getInt("priority");                  if (prioritydata == 1)                     error++;                 else if (prioritydata == 2)                     info++;                 else if (prioritydata == 3)                     warning++;                 else if (prioritydata == 4)                     critical++;             }           } catch (SQLException er) {             // TODO Auto-generated catch block             er.printStackTrace();         }          System.out.println("after query");                   final CategoryDataset dataset = createDataset();       final JFreeChart chart = createChart(dataset);        ChartComposite frame = new ChartComposite(barchartComposite,SWT.NONE,chart,true);               frame.setLayoutData(new GridData(GridData.FILL_BOTH));       frame.pack();       frame.setVisible(true);       frame.setChart(chart);       frame.forceRedraw();       barchartComposite.getLayout();        break;       }     }   });   }   /**  * Returns a sample dataset.  *   * @return The dataset.  */ private CategoryDataset createDataset() {      // row keys...     final String series1 = "First";       // column keys...     final String category1 = "error";     final String category2 = "info";     final String category3 = "warning";     final String category4 = "critical";       // create the dataset...     final DefaultCategoryDataset dataset = new DefaultCategoryDataset();      dataset.addValue(10, series1, category1);     dataset.addValue(5, series1, category2);     dataset.addValue(6, series1, category3);     dataset.addValue(9, series1, category4);       return dataset;  }  /**  * Creates a sample chart.  *   * @param dataset  the dataset.  *   * @return The chart.  */ private JFreeChart createChart(final CategoryDataset dataset) {      // create the chart...     final JFreeChart chart = ChartFactory.createBarChart(         "Priority BarChart",         // chart title         "priority",               // domain axis label         "Value",                  // range axis label         dataset,                  // data         PlotOrientation.VERTICAL, // orientation         true,                     // include legend         true,                     // tooltips?         false                     // URLs?     );      // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...      // set the background color for the chart...     chart.setBackgroundPaint(Color.white);      // get a reference to the plot for further customisation...     final CategoryPlot plot = chart.getCategoryPlot();     plot.setBackgroundPaint(Color.lightGray);     plot.setDomainGridlinePaint(Color.white);     plot.setRangeGridlinePaint(Color.white);      // set the range axis to display integers only...     final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();     rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());      // disable bar outlines...     final BarRenderer renderer = (BarRenderer) plot.getRenderer();     renderer.setDrawBarOutline(false);      // set up gradient paints for series...     final GradientPaint gp0 = new GradientPaint(         0.0f, 0.0f, Color.blue,          0.0f, 0.0f, Color.lightGray     );      renderer.setSeriesPaint(0, gp0);       final CategoryAxis domainAxis = plot.getDomainAxis();     domainAxis.setCategoryLabelPositions(         CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)     );     // OPTIONAL CUSTOMISATION COMPLETED.      return chart;  }     @Override public void setFocus() {     // TODO Auto-generated method stub  }   

}

Английский оригинал

I am creating barchart in a view of RCP plugin. The data to be displayed in the graph comes from the sqlite3 database file. The code I have written displays the barchart onto the view based on the date provided as input which we can select by using calender. sqlite3 connects to the database file and queries based on the date and gets the barchart data. Jfreechart is used to create the barchart and ChartComposite displays it onto the view.

The problem is when I select multiple dates one after another and ask to display, all the graphs are displayed on the same view, which i dont require. the output must be as follows, when i select the date for second time, the present graph must be deleted and new graph must be displayed. I tried to add dispose() in the code but its not working.

Following is my code for the same,

public class BarChartDisplay extends ViewPart {

Text searchfield = null; String path = SelectDataBase.path; public static int error=0; public static int info=0; public static int critical=0; public static int warning=0;    public BarChartDisplay() {     // TODO Auto-generated constructor stub }  @Override public void createPartControl(Composite parent) {     // TODO Auto-generated method stub      //Composite A:     final Composite mainComposite = new Composite(parent, SWT.NONE);     GridData mainLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);     mainLayoutData.horizontalSpan = 1;     mainComposite.setLayoutData(mainLayoutData);     GridLayout outerLayout = new GridLayout();     outerLayout.marginTop = 30;     outerLayout.marginLeft = 20;     outerLayout.marginRight = 20;     mainComposite.setLayout(outerLayout);      //Composite B:     final Composite selectComposite = new Composite(mainComposite, SWT.NONE);     GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);     layoutData.horizontalSpan = 1;     selectComposite.setLayoutData(layoutData);     GridLayout layout = new GridLayout(4, false);     selectComposite.setLayout(layout);      //Composite C:     final Composite barchartComposite = new Composite(mainComposite, SWT.NONE);     GridData layoutData2 = new GridData(SWT.FILL, SWT.FILL, true, true);     layoutData2.horizontalSpan = 1;     barchartComposite.setLayoutData(layoutData2);     GridLayout layout2 = new GridLayout(1, false);     barchartComposite.setLayout(layout2);        final CalendarCombo ccombo = new CalendarCombo(selectComposite, SWT.READ_ONLY | SWT.FLAT);     GridData layoutDataCal = new GridData(150, 40);      ccombo.computeSize(SWT.DEFAULT, SWT.DEFAULT);     ccombo.showCalendar();     ccombo.setLayoutData(layoutDataCal);       org.eclipse.swt.widgets.Button button = new org.eclipse.swt.widgets.Button(selectComposite, SWT.PUSH);     button.setText("Go");    button.addListener(SWT.Selection, new Listener() {     public void handleEvent(Event e) {       switch (e.type) {       case SWT.Selection:          error = 0;         info = 0;         warning = 0;         critical = 0;          DB db = new DB();         Connection conn = null;         conn = db.ConnTable(path);         Statement statement;         try {             statement = conn.createStatement();             String query = null;             String textfielddata = ccombo.getDateAsString();              System.out.println(textfielddata);              query = "select priority from log where creation_date = '"+ textfielddata +"'";               System.out.println(query);             ResultSet rs = statement.executeQuery(query);              while (rs.next()) {                  int  prioritydata = rs.getInt("priority");                  if (prioritydata == 1)                     error++;                 else if (prioritydata == 2)                     info++;                 else if (prioritydata == 3)                     warning++;                 else if (prioritydata == 4)                     critical++;             }           } catch (SQLException er) {             // TODO Auto-generated catch block             er.printStackTrace();         }          System.out.println("after query");                   final CategoryDataset dataset = createDataset();       final JFreeChart chart = createChart(dataset);        ChartComposite frame = new ChartComposite(barchartComposite,SWT.NONE,chart,true);               frame.setLayoutData(new GridData(GridData.FILL_BOTH));       frame.pack();       frame.setVisible(true);       frame.setChart(chart);       frame.forceRedraw();       barchartComposite.getLayout();        break;       }     }   });   }   /**  * Returns a sample dataset.  *   * @return The dataset.  */ private CategoryDataset createDataset() {      // row keys...     final String series1 = "First";       // column keys...     final String category1 = "error";     final String category2 = "info";     final String category3 = "warning";     final String category4 = "critical";       // create the dataset...     final DefaultCategoryDataset dataset = new DefaultCategoryDataset();      dataset.addValue(10, series1, category1);     dataset.addValue(5, series1, category2);     dataset.addValue(6, series1, category3);     dataset.addValue(9, series1, category4);       return dataset;  }  /**  * Creates a sample chart.  *   * @param dataset  the dataset.  *   * @return The chart.  */ private JFreeChart createChart(final CategoryDataset dataset) {      // create the chart...     final JFreeChart chart = ChartFactory.createBarChart(         "Priority BarChart",         // chart title         "priority",               // domain axis label         "Value",                  // range axis label         dataset,                  // data         PlotOrientation.VERTICAL, // orientation         true,                     // include legend         true,                     // tooltips?         false                     // URLs?     );      // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...      // set the background color for the chart...     chart.setBackgroundPaint(Color.white);      // get a reference to the plot for further customisation...     final CategoryPlot plot = chart.getCategoryPlot();     plot.setBackgroundPaint(Color.lightGray);     plot.setDomainGridlinePaint(Color.white);     plot.setRangeGridlinePaint(Color.white);      // set the range axis to display integers only...     final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();     rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());      // disable bar outlines...     final BarRenderer renderer = (BarRenderer) plot.getRenderer();     renderer.setDrawBarOutline(false);      // set up gradient paints for series...     final GradientPaint gp0 = new GradientPaint(         0.0f, 0.0f, Color.blue,          0.0f, 0.0f, Color.lightGray     );      renderer.setSeriesPaint(0, gp0);       final CategoryAxis domainAxis = plot.getDomainAxis();     domainAxis.setCategoryLabelPositions(         CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)     );     // OPTIONAL CUSTOMISATION COMPLETED.      return chart;  }     @Override public void setFocus() {     // TODO Auto-generated method stub  } 

}

</div
              

Список ответов

1
 
vote

Вам не нужно распоряжаться графиком, просто воссоздайте набор данных с новой выбранной датой и используем <код> int2 , чтобы обновить диаграмму с новыми данными.

 

You don't need to dispose the chart, just recreate the dataset with the new selected date, and use chart.getPlot().setDataset(new_dataset) to refresh the chart with the new data.

</div
 
 
 
 

Связанный проблема

1  Как вызвать мой метод reзов API, интегрированный с Redis на Windows?  ( How to invoke my restful api method integrated with redis on windows ) 
Я пытаюсь запустить образец весеннего загрузочного приложения с Redis. Я использую завод соединения JEDIS и установив его на заводе подключения шаблона Redis....

1  Установка поля _ID с использованием SQLite & ContentProvider в Android  ( Setting the id field using sqlite contentprovider in android ) 
Я пытаюсь настроить ContentProvider в приложении Android, чтобы держать информацию о домах. Я хотел бы иметь возможность установить поле _id, чтобы быть таким...

0  Android Studio Back Button  ( Android studio back button problems ) 
на данный момент. Я создал простое приложение для викторины на Android Studio. Все работает нормально, в том числе, когда я иду от первой фактической жизни. Я...

5  Конвенции о ведении регистрации [Закрыто]  ( Logging conventions ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

1  Apache Vamel: Как проверить, например, набор набора <customObject>  ( Apache camel how to test for instance of setcustomobject ) 
Кто-нибудь знает, как тестировать для различных типов коллекции в маршруте? <код> // This processor returns a Collection of 2 Sets // 1. Set<GoodMessage> //...

17  Перегрузка Java VS переопределения  ( Java overloading vs overriding ) 
Привет, я просто хочу убедиться, что у меня есть эти понятия правильно. Перегрузка в Java означает, что у вас может быть конструктор или метод с различным кол...

3  Eclipse Java Formatter - новая линия до закрытия скобок  ( Eclipse java formatter newline before closing parentheses ) 
Можно ли настроить Dippleter Eclipse Java для вставки новой строки до закрытия скобок выражений, деклараций метода и вызовы методов? Обратите внимание на же...

0  Случайные 7-значные номера на andich android  ( Random 7 digit numbers on click android ) 
Я хотел бы, чтобы вы помогли мне в этом коде. Я могу генерировать случайные числа, но не в точном количестве. Вопрос: Как я могу генерировать 7 случайных ци...

21  Тип несоответствия для генеральных классов  ( Type mismatch for class generics ) 
У меня есть следующий код, который не скомпировался, и хотя есть способ сделать его компиляцией, я хочу понять, почему он не компилирует. Может ли кто-нибудь ...

0  Должен ли я использовать Mac для разработки Javafx для iOS  ( Do i have to use a mac to develop javafx for ios ) 
Документация http://docs.gluonhq.com/charm/4.0.1 / # _ iOS говорит, что мне нужно «Mac с MacOS X 10.9 или превосходящим» для разработки для iOS. Но я не пон...

3  Как мне изменить ответ на запрос на параметры http в приложении Spring MVC 2.5?  ( How do i change the response for a http options request in a spring mvc 2 5 appl ) 
Это звучит как тривиальный вопрос, но каким-то образом я не могу понять это. У меня есть приложение Spring MVC. Я не поддерживаю никаких HTTP-методов, кроме...

0  карта JSON на провал строки в Java  ( Json map to string failure in java ) 
В Java я пытаюсь преобразовать карту в JSon строку. используя код ниже <код> private void sendResponse(Map<String, String> responseMap) throws IOException {...

1  Содержание XML преобразования передается с POST на объект Java, атрибут внутри элемента: REST  ( Rest convert xml content passed with post to a java object attribute inside th ) 
<Р> Я работаю с REST сервисов и я хочу передать XML-текст запроса POST. Мой сервер реализован в JAVA. Давайте предположим, что я посылаю этот XML: <код> <ran...

22  Множественные методы постконструкции?  ( Multiple postconstruct methods ) 
Он говорит в Документация Java для Postconstruct что Только один метод может быть аннотирован с этой аннотацией Но я просто пытался аннотировать три м...

-1  Нужно упростить логическое выражение (байт, короткое, целое число) Java  ( Need to simplify logical expression byte short integer java ) 
Мне нужно упростить выражение Первое выражение <код> (byte)( (short)((short)( (byte)((theInt >> 8) & 0xFF) & 0xFF) + 128) & 0xFF); второе выражение ...

Связанный проблема

1  Как вызвать мой метод reзов API, интегрированный с Redis на Windows? 
1  Установка поля _ID с использованием SQLite & ContentProvider в Android 
0  Android Studio Back Button 
5  Конвенции о ведении регистрации [Закрыто] 
1  Apache Vamel: Как проверить, например, набор набора <customObject> 
17  Перегрузка Java VS переопределения 
3  Eclipse Java Formatter - новая линия до закрытия скобок 
0  Случайные 7-значные номера на andich android 
21  Тип несоответствия для генеральных классов 
0  Должен ли я использовать Mac для разработки Javafx для iOS 
3  Как мне изменить ответ на запрос на параметры http в приложении Spring MVC 2.5? 
0  карта JSON на провал строки в Java 
1  Содержание XML преобразования передается с POST на объект Java, атрибут внутри элемента: REST 
22  Множественные методы постконструкции? 
-1  Нужно упростить логическое выражение (байт, короткое, целое число) Java 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.