使芯片在晶圆图jfree图表(javafx应用程序)中的鼠标点击事件时可选



我创建了晶圆图。我想使晶圆中的芯片(芯片)可以通过鼠标单击并选择并插入标签以及从一个芯片到另一个芯片的线条。有人精通jfree图表吗?

晶圆图图表

以下是晶圆图的工具提示侦听器的基本部分,这是一种选择芯片的形式。 将以下内容添加到 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 "";
}
}

这将创建模具的 x,y 和箱或您正在使用的任何值的工具提示,

而不是箱。

相关内容

  • 没有找到相关文章

最新更新