2016-12-26 18 views
3

В основном я хочу, чтобы линейный график был увеличен и уменьшен (всего 4 кнопки, 2 для оси X (увеличение и уменьшение) и другие два для оси Y) на кнопке, щелкнув вдоль любой оси, как если бы график, нарисованный на отрицательной оси x и отрицательной области оси Y, в зависимости от точек данных, а затем при нажатии кнопки график должен быть увеличен и уменьшен вдоль этой отрицательной оси x или отрицательной оси Y на основе нажатия кнопки.Функция увеличения и уменьшения масштаба нажатием кнопки на линейном графике JfreeChart?

Как я могу достичь этого? Любой образец кода с подробным объяснением очень полезен !!

private JButton createZoom() 
{ 
     final JButton auto = new JButton("ZOOMIN"); 
     auto.setActionCommand("ZOOM_IN_DOMAIN"); 
     auto.addActionListener(new ChartPanel(chart)); 
     return auto; 
    } 

ответ

4

Action реализация каждой кнопки должен вызвать соответствующий метод, используемый для создания ChartPanel это всплывающее меню команд масштабирования. Реализация actionPerformed() является удобным руководством по доступной функции масштабирования. Например, ZOOM_IN_DOMAIN_COMMAND обрабатывается путем вызова zoomInDomain(). На основании этого example, типичный Увеличить X Обработчик относительно начала координат показано ниже:

private JButton createZoom() { 
    final JButton zoomX = new JButton(new AbstractAction("Zoom X") { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      chartPanel.zoomInDomain(0, 0); 
     } 
    }); 
    return zoomX; 
} 

Если по умолчанию zoomPoint достаточно, вы можете использовать реализацию на графике панели в:

private JButton createZoom() { 
    final JButton zoomX = new JButton("Zoom X"); 
    zoomX.setActionCommand(ChartPanel.ZOOM_IN_DOMAIN_COMMAND); 
    zoomX.addActionListener(chartPanel); 
    return zoomX; 
} 

zoomed image

Напротив, метод createZoom() в оригинале example показывает, как вызвать ChartPanel метод restoreAutoBounds(), который восстанавливает расчет автодиапазона по обеим осям.

image

+0

В примере ссылки вы предоставили "chartPanel.setMouseWheelEnabled (истинный);" эта строка вызывает график ZoomIn и ZoomOut вдоль оси x, оси y и того и другого. но я хочу, чтобы эта функциональность нажата на кнопку, если я нажимаю кнопку «xZoom», масштабирование должно выполняться только по оси x. Аналогично при нажатии кнопки «yZoom» масштабирование должно выполняться только по оси y. zoom "нажата, масштабирование должно выполняться по обоим осям. Это мое требование, можете ли вы, пожалуйста, помочь с некоторым примером кода о том, как это сделать. – JAVA

+0

Я добавил конкретный пример выше; если у вас есть проблемы, отредактируйте свой вопрос, включив в него [mcve], который показывает ваш пересмотренный подход. – trashgod

+0

Спасибо за отредактированный ответ :) Но одна из ссылок была разбита из 2, которые вы предоставили. – JAVA

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

  • Нет связанных вопросов^_^