簡體   English   中英

Java Swing Clickable JFree圖表,單擊每個條形圖或餅圖以打開新框架或新圖表

[英]Java Swing Clickable JFree Charts, clicked each bar chart or pie chart to open new frame or new charts

我正在為我的最后一年的項目制作一個基於java swing的桌面應用程序。 我創建了從數據庫連接的不同類型的圖表。

現在想使此儀表板更具交互性,當單擊每個欄時,我想進一步向下鑽取以打開另一個圖表或一個框架或表格以獲取詳細信息。

誰能幫助我,該如何單擊圖表上的條形圖,以打開新框架或任何新窗口或圖表?

下面是我的應用程序屏幕截圖,也是我其中一張圖表的代碼。

謝謝你們

申請畫面

http://www.tiikoni.com/tis/view/?id=3b425ff

在此處輸入圖片說明

http://www.tiikoni.com/tis/view/?id=4336ceb

在此處輸入圖片說明

//For the Bar Chart
private void lineChart() {
    // *************** ADDING BAR CHART FROM DATABASE *****************************

    try {
        String sql = "select Region, Male, Female from ObeseLondon limit 14";
        JDBCCategoryDataset dataset = new JDBCCategoryDataset(MySQL.Connectdb(), sql);
        JFreeChart chart = ChartFactory.createBarChart("", "Town", "No. Of Obese People", dataset, PlotOrientation.HORIZONTAL, true, true, true);
        chart.setBackgroundPaint(Color.white);
        BarRenderer render = null;
        //CategoryPlot plot = null;
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.getRenderer().setSeriesPaint(0, Color.green);
        plot.getRenderer().setSeriesPaint(1, Color.yellow);
        render = new BarRenderer();

        org.jfree.chart.ChartFrame chartframe = new org.jfree.chart.ChartFrame("Query Chart", chart);
        //chartframe.setVisible(true);
        //chartframe.setSize(200,500);
        panelBarChart.setLayout(new java.awt.BorderLayout());
        ChartPanel chartPanel = new ChartPanel(chart);
        panelBarChart.add(chartPanel);
        panelBarChart.validate();

    //****** Trying Button Click Action for bar chart ********
    /*
    chart.addChangeListener(chartPanel);
    chartPanel.addChartMouseListener(new ChartMouseListener() {
    public void chartMouseMoved(ChartMouseEvent e) {
       }

    @Override
    public void chartMouseClicked(ChartMouseEvent e) {
     new JOptionPane().showMessageDialog(null, "You have clicked the bar chart", "Hello", JOptionPane.OK_OPTION);

    }
    });
 */
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }      

您需要向ChartMouseListener添加一個chartPanel

chartPanel.addChartMouseListener(new ChartMouseListener() {

    @Override
    public void chartMouseClicked(ChartMouseEvent event) {
        ChartEntity entity = event.getEntity();
        System.out.println(entity);
    }

    @Override
    public void chartMouseMoved(ChartMouseEvent event) {
    }
});

ChartEntity將是CategoryItemEntity ,可用於訪問rowKeycolumnKeydataset 然后,您可以打開一個對話框或選項卡以顯示找到的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM