【发布时间】:2020-05-18 11:30:35
【问题描述】:
我有一个方法,它用 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;}
感谢您的建议,任何示例都可能会有所帮助
【问题讨论】:
标签: java swing jpanel jfreechart