【问题标题】:How put(pack) JPanel with chart inside JPanel which inside JFrame? [duplicate]如何在 JFrame 中的 JPanel 中放置(打包)带有图表的 JPanel? [复制]
【发布时间】: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


    【解决方案1】:

    我没有看到ChartPaneljPanel 之间的区别。

    我通过使用解决了这个问题

    jPanel1.add(cross.createContent(), BorderLayout.CENTER);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多