有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何把(打包)JPanel和图表放在JPanel里面,哪个放在JFrame里面?

我有一个方法,它使用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;}

谢谢你的建议,任何例子都会有帮助


共 (1) 个答案

  1. # 1 楼答案

    我没有看到ChartPaneljPanel之间的区别

    我通过使用

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