Color Grid:确定单击了哪个框

时间:2013-06-10 19:46:22

标签: java android teechart

我的问题涉及Color Grid teechart。我正在尝试编写代码,以便当用户触摸网格上的框时,只有该框颜色会发生变化。我发现使用chart.getHeight()和chart.getWidth()给出了图表的整个区域,而不仅仅是颜色网格尺寸。所以现在,我估计网格的长度和宽度(以像素为单位)来估计用户触摸的方框。有什么方法可以找出颜色网格长度和高度的确切像素数量?另外,我注意到Color Grid api中的“clicked”方法。有内置的东西可以让我找到用户触摸/点击的框吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我做了一个使用seriesClicked事件的简单示例。但是,它似乎给出了正确的索引,但是单元格的颜色似乎在相反的行中:

    oldIndex = -1;
    tChart1.getAspect().setView3D(false);
    tChart1.getLegend().setVisible(false);

    ColorGrid col1 = new ColorGrid(tChart1.getChart());
    col1.setColorEach(true);
    for (int x=0; x<10; x++)
        for (int z=0; z<10; z++)
            col1.add(x, 1, z, Color.random());

    col1.addSeriesMouseListener(new SeriesMouseAdapter() {      
        @Override
        public void seriesClicked(SeriesMouseEvent e) {
            ColorGrid myGrid = (ColorGrid)tChart1.getSeries(0);
            int valueIndex = myGrid.clicked(e.getPoint().x, e.getPoint().y);
            if (valueIndex > -1) { 
                if (oldIndex > -1) {
                    myGrid.getColors().setColor(oldIndex, oldColor);
                }
                oldIndex = valueIndex;
                oldColor = myGrid.getValueColor(valueIndex);
                myGrid.getColors().setColor(valueIndex, Color.red);
                tChart1.getHeader().setText(String.valueOf(valueIndex));
                tChart1.getSeries(0).repaint();
            }
        }
});

我将添加缺陷列表,需要修改ColorGrid的点击功能(TJ71016603)

同时,解决方法可能是修改给定的valueIndex,如下所示:

if (valueIndex > -1) {
    valueIndex = valueIndex / myGrid.getNumZValues() * myGrid.getNumZValues() + (myGrid.getNumZValues()-1 - (valueIndex % myGrid.getNumZValues()));
    if (oldIndex > -1) {
    //...
}