StackedBar直方图鼠标事件

时间:2016-04-11 19:14:31

标签: java swing jfreechart

我使用JFreeChart API创建了直方图。这是StackedBar直方图:

enter image description here

我的直方图表示右侧JTable中的数据。例如,字段thea=11作为Int32存在两次,而作为Int64存在两次。 我在我的图表上实现了一个鼠标事件:当一个人按下一个条形时,就会选择相应的Jtable记录。 例如,如果在JTable中按11.0栏,我得到:

enter image description here

这是我的倾听者:

chartPanel.addChartMouseListener(new ChartMouseListener() {
    @Override
    public void chartMouseMoved(ChartMouseEvent arg0) {
    }

    @Override
    public void chartMouseClicked(ChartMouseEvent arg0) {

        try{
        TableModel model = table.getModel();    
        CategoryItemEntity entity = (CategoryItemEntity) arg0.getEntity();
        Comparable row = entity.getRowKey();
        Comparable col = entity.getColumnKey();
        System.out.println(String.valueOf(row));
        String field = String.valueOf(col);

            for(int i = 0; i<model.getRowCount(); i++) {
                if(model.getValueAt(i, 0).equals(field)) {

                    int realRowNumber = table.convertRowIndexToView(i);
                    table.changeSelection(realRowNumber, 0, false, false);
                    break;

                }
            }
        }
        catch (Exception e) {
            System.out.println("No bar selected");
        }
    }
});

侦听器使用单个条形图,但当条形图分为两个或多个部分时,它无法正常工作。 例如,如果我按下11栏的蓝色部分,则右侧JTable中的所选行是第一个11thea的行,所以在我的情况下所选行为[11,Int32,2]而不是[11,Int64,2],这是要选择的右行。

0 个答案:

没有答案