我正在为我的最后一年项目制作一个基于 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
和 数据集
。然后您可以打开一个对话框或选项卡来显示找到的数据。
关于Java Swing Clickable JFree Charts,单击每个条形图或饼图即可打开新框架或新图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899094/