如何将JPanel与JPanel内的图表放在JFrame内(打包)?

问题描述 投票:0回答:1

我有一个方法,该方法返回带有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
1个回答
0
投票

哦,我不好,没有看到ChartPanel和jPanel之间的区别,由解决:jPanel1.add(cross.createContent(),BorderLayout.CENTER);'''

© www.soinside.com 2019 - 2024. All rights reserved.