我有一个方法,该方法返回带有JFreeChart和ChartActionListener的JPanel。在我的测试程序中,它运行良好,我只需编写setContentPane(createContent());
并将程序显示为完整大小的JPanel。
[当我在特殊的地方用JPanel创建主框架时(我是通过NetBeans swing构造器完成的,我的JPanel无法显示内容,它只是一个空的JPanel。
我试图像JPanel pan = createContent();
jPanel1.add(pan);
=那样无法使用。
我也试图写:jPanel1 = createContent();
:它不起作用。
仅当我以后写相同的内容时才有效。...:initComponents();CrossHair cross = new CrossHair();setContentPane(cross.createContent());
所以它显示了内容,但是我程序的其他部分却无法访问。.这里是createContent方法:
private JPanel createContent() {
JFreeChart chart = createChart(createDataset());
chartPanel = new ChartPanel(chart);
chartPanel.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseClicked(ChartMouseEvent event) {
//---- to not make that code big
}
@Override
public void chartMouseMoved(ChartMouseEvent event) {
//---to not make that code big
}
});
CrosshairOverlay crosshairOverlay = new CrosshairOverlay();
xCrosshair = new Crosshair(Double.NaN, Color.RED, new BasicStroke(0f));
xCrosshair.setLabelVisible(true);
yCrosshair = new Crosshair(Double.NaN, Color.GRAY, new BasicStroke(0f));
yCrosshair.setLabelVisible(true);
crosshairOverlay.addDomainCrosshair(xCrosshair);
crosshairOverlay.addRangeCrosshair(yCrosshair);
chartPanel.addOverlay(crosshairOverlay);
return chartPanel;}
感谢您的建议,任何示例都可能会有所帮助
哦,我不好,没有看到ChartPanel和jPanel之间的区别,由解决:jPanel1.add(cross.createContent(),BorderLayout.CENTER);'''