2017-01-31 8 views
0

Я создал диаграмму вафельной карты. Я хочу сделать чипсы (die) в пластине, которые можно выбрать по щелчку мыши, и вставить метки, а также линии от одной микросхемы к другой. Любой эксперт в диаграмме jfree?Сделать фишки Выбирается при щелчке мыши в графике jfree wafermap (приложение javafx)

wafermap chart

+1

Что произойдет, если вы добавите «ChartMouseListener»? – trashgod

+1

Перекрестная ссылка [здесь] (http://www.jfree.org/forum/viewtopic.php?f=3&t=117760); a [tag: jfreechart] contributor отмечает, что в существующем 'WaferMapRenderer' нет поддержки сущности. – trashgod

+0

@trashgod Итак, как я могу добавить указатель мыши на каждый чип? который дает по меньшей мере мне ярлык или изменение цвета чипа? –

ответ

0

Вот основные части для слушателя подсказки для карт вафельных, которая является формой выбора штампа. Добавьте следующее WaferMapPlot:

public String findChipAtPoint(double x, double y, Rectangle2D plotArea){ 
    double[] xValues = this.getChipXValues(plotArea, dataset.getMaxChipX() 
     + 2, dataset.getChipSpace()); 
    double startX = xValues[1]; 
    double chipWidth = xValues[0]; 
    int ychips = this.dataset.getMaxChipY()+ 2; 
    double[] yValues = this.getChipYValues(plotArea, ychips, 
     dataset.getChipSpace()); 
    double startY = yValues[1]; 
    double chipHeight = yValues[0]; 
    double chipSpace = dataset.getChipSpace(); 
    int chipX = (int)Math.floor((x - startX + chipWidth + chipSpace)/
     (chipWidth + chipSpace)); 
    int chipY = (int)Math.floor((y - startY + chipHeight + chipSpace)/
     (chipHeight + chipSpace)); 
    chipX = chipX - dataset.getXOffset() - 1; 
    chipY = ychips - chipY - dataset.getYOffset() - 1; 
    StringBuilder sb = new StringBuilder("("); 
    Number value = dataset.getChipValue(chipX, chipY); 
    if (value instanceof Double) 
     value = value.intValue(); 
    sb.append(chipX).append(",").append(chipY).append(") ").append(
     (value == null) ? "" : value.toString()); 
    return sb.toString(); 
} 

Затем сделайте подкласс ChartPanel, который будет слушатель:

public class WaferMapChartPanel extends ChartPanel { 

WaferMapPlot waferPlot = null; 
WaferMapDataset dataSet = null; 

public WaferMapChartPanel(JFreeChart chart){ 
    super(chart); 
    waferPlot = (WaferMapPlot)chart.getPlot(); 
    if (waferPlot != null) 
     dataSet = waferPlot.getDataset(); 
} 

/** 
* Returns a string for the tooltip. 
* @param e the mouse event. 
* @return A tool tip or <code>null</code> if no tooltip is available. 
*/ 
@Override 
public String getToolTipText(MouseEvent e) { 
    if (waferPlot != null){ 
     Object source = e.getSource(); 
     if (source instanceof WaferMapChartPanel){ 
      WaferMapChartPanel chartSource= (WaferMapChartPanel)e.getSource(); 
      Rectangle2D plotArea = chartSource.getChartRenderingInfo().getPlotInfo().getPlotArea(); 
      Insets insets = this.getInsets(); 
      double x = (e.getX() - insets.left)/this.getScaleX(); 
      double y = (e.getY() - insets.top)/this.getScaleY(); 
      return waferPlot.findChipAtPoint(x, y, plotArea); 
     } 
    } 
    return ""; 
} 
} 

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

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