[英]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
,可用於訪問rowKey
, columnKey
和dataset
。 然后,您可以打開一個對話框或選項卡以顯示找到的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.