Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > JFreeChart


Автор: Ekate 13.12.2007, 16:13
Добрый вечер,

прошу прощения за глупый вопрос, я на Java программирую совсем недавно.
Я по нажатию кнопки рисую чарт (использую JFreeChart) (выбираю из таблицы объект и для него рисую), но почему-то когда курсор мыши уходит с кнопки или заходит в область пострения
то рисуется автоматически первый чарт. Так они и меняют друг друга, текущий и первый, в зависимости от положения курсора....
Не понимаю, почему

Спасибо,
Ekate

Добавлено через 6 минут и 42 секунды
Уточнение, график меняется когда прохожу по контролам формы

Автор: Platon 13.12.2007, 16:47
Код слушателя кнопочки в студию!

Автор: powerOn 13.12.2007, 16:59
Модератор: Название темы должно отражать ее суть!

Автор: Ekate 13.12.2007, 17:07
Форма в билдере, поэтому напрямую со слушателями не работаю,

След код сгенерирован автоматически
Код

btnShow.setText("Show graph");
        btnShow.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnShowMouseClicked(evt);
            }
        });


Обработчик на клик вызывает функцию, которая и рисует диаграмму

powerOn, сорри, исправлюсь

Автор: serger 13.12.2007, 17:46
Вот она радость визуальщины.
Какая радость писать неконтролируемый код?!

ps. Пож. приведите более понятный код, что откуда и куда запускается..

Автор: Kangaroo 13.12.2007, 17:50
Цитата(serger @  13.12.2007,  16:46 Найти цитируемый пост)
 Пож. приведите более понятный код, что откуда и куда запускается..

А точнее покажите метод btnShowMouseClicked(evt);

Автор: powerOn 13.12.2007, 20:48
Еще к поставленным вопросам: Каким образом рисуете? Методы paint или paintComponent не переопределяете? Если да, то их тоже неплохо бы увидеть.

Автор: Ekate 14.12.2007, 10:26
Cпасибо за помощь,

на клик мыши вызывается drawChart()



Код

private void drawChart(){
   
    int PeriodIndex=cmbPeriod.getSelectedIndex();
    String item=getSelectedItem();
    if (PeriodIndex!=-1 && item.length()!=0){
        Object[] coll = data.getHistory(getSelectedItem(),PeriodIndex);
        String[] TempStatistics = (String[])coll[0];
        TimeSeriesCollection globalHistory = (TimeSeriesCollection)coll[1];
        LoadChart(drawPainChart(globalHistory,PeriodIndex));
    } 
    else {ErrorMessage("Please, select the patient and the period for the chart");}
}

 private JFreeChart drawPainChart(TimeSeriesCollection hSeriesCollection, int k) {
        
        TimeSeriesCollection hDataset = new TimeSeriesCollection();
        TimeSeries tempSeries = hSeriesCollection.getSeries(k);
        hDataset.addSeries(tempSeries);
        
        DateAxis timeAxis = new DateAxis("Time");
        timeAxis.configure();
        
        NumberAxis painAxis = new NumberAxis("Level");
        hAxis.setTickUnit(new NumberTickUnit(1));
        hAxis.setRange(-0.5, 10.5);
        
        XYBarRenderer barRenderer = new XYBarRenderer();
        
        XYLineAndShapeRenderer lineRenderer = new XYLineAndShapeRenderer();
        lineRenderer.setShapesVisible(false);
        
        XYDotRenderer dotRenderer = new XYDotRenderer();
        dotRenderer.setDotHeight(6);
        dotRenderer.setDotWidth(6);
        
        XYPlot hPlot = new XYPlot();
        hPlot.setDataset(0, hDataset);
        hPlot.setDataset(1, hDataset);
        hPlot.setDomainAxis(timeAxis);
        hPlot.setRangeAxis(hAxis);
        hPlot.setRenderer(0, lineRenderer);
        hPlot.setRenderer(1, dotRenderer);
        
        LegendItemCollection emptyLegend = new LegendItemCollection();
        hPlot.setFixedLegendItems(emptyLegend);
        
        JFreeChart hChart = new JFreeChart(hPlot);
        return hChart;
    } 

private void LoadChart(JFreeChart chart){
      
        ChartPanel panel = new ChartPanel(null); 
        panel.setChart(chart);
        jPanelChart.setLayout(new BorderLayout()); 
        jPanelChart.add(panel, BorderLayout.CENTER);
  }


Спасибо,
Ekate

Автор: KOp4iK 14.12.2007, 13:35
эээ погодите а как же 
Код

btnShowMouseClicked(evt);

Цитата

на клик мыши вызывается drawChart()

клик мыши на каком элементе?
Цитата

когда курсор мыши уходит с кнопки 

очень похоже на то что у вас перекрыт метод
Код

            public void mouseExited(MouseEvent e)
            {
                //To change body of implemented methods use File | Settings | File Templates.
            }

Автор: Ekate 14.12.2007, 14:20


Цитата(KOp4iK @  14.12.2007,  13:35 Найти цитируемый пост)
клик мыши на каком элементе?


Некорректно выразилась, drawChart вызываю как раз на событие клика по кнопке, т.е.
Код

private void btnShowMouseClicked(java.awt.event.MouseEvent evt) {                                     
         drawChart();
    }   




Автор: Real McCoy 15.12.2007, 15:27
Ekate, 
а никто нигде, случайно, больше не вызывает drawChart() или LoadChart()?

И второстепенный вопрос: обязательно ли каждый раз заново создавать ChartPanel? Если она у Вас - элемент дизайна формы, то лучше её создать один раз вместе с формой, а потом просто перерисовывать chart на ней.

Автор: Ekate 17.12.2007, 12:10
Real McCoy, ну конечно же, глупая ошибка!
Теперь все работает, спасибо smile)

Автор: powerOn 18.12.2007, 00:02
Модератор: Разделил темы. О tooltip-ах теперь http://forum.vingrad.ru/forum/index.php?show_type=forum&showtopic=187671

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)