如何从Java Swing中连接的面板中删除面板?

时间:2016-04-13 20:41:55

标签: java swing

我遇到了Java摇摆的严重问题。

这是我初始化图表的方式,现在一切正常,xyChartPanel在字段中被声明为JPanel,我使用刚创建的xyChart对其进行初始化。完成此步骤后,我可以看到以xyChartPanel编写代码为中心的图表(绘制到JPanel),请参阅add(xyChartPanel, BorderLayout.CENTER);

private void initXYChart() {
        // Create Chart
        xyChart = new XYChartBuilder().width(800).height(800).xAxisTitle(xColName).yAxisTitle("Y").build();

        // Customize Chart
        xyChart.getStyler().setLegendPosition(LegendPosition.InsideNE);
        xyChart.getStyler().setAxisTitlesVisible(true);
        xyChart.getStyler().setDefaultSeriesRenderStyle(XYSeriesRenderStyle.Line);

        double[] yCoordArray = new double[xCoordArray.length];

        // Loop through the series
        for (int i = 0; i < yCoordinates.size(); i++) {
            List<Double> yCoordOneSeries = yCoordinates.get(i);
            // Convert list to array
            for (int j = 0; j < yCoordArray.length; j++) {
                yCoordArray[j] = yCoordOneSeries.get(j);
            }
            xyChart.addSeries(yColNames.get(i), xCoordArray, yCoordArray);
        }

        xyChartPanel = new XChartPanel<>(xyChart);
        add(xyChartPanel, BorderLayout.CENTER);

        xyChart.getStyler().setDefaultSeriesRenderStyle(XYSeriesRenderStyle.Area);

        add(xyChartPanel, BorderLayout.CENTER);
    }

现在问题出现了,我不希望我的图表一直保持不变,实际上我想改变我的图表的样式,以响应我在单选按钮上的操作。

我刚刚编写了updateChartPanelStyle(JRadioButton styleButton)方法

private void updateChartPanelStyle(JRadioButton styleButton) {
        String style = styleButton.getText();
        if (styleButton.isSelected()) {
            System.out.println(style);
            switch (style) {
            case "Line":
                xyChart.getStyler().setDefaultSeriesRenderStyle(XYSeriesRenderStyle.Line);
                break;
            case "Area":
                xyChart.getStyler().setDefaultSeriesRenderStyle(XYSeriesRenderStyle.Area);
                break;
            case "Scatter":
                xyChart.getStyler().setDefaultSeriesRenderStyle(XYSeriesRenderStyle.Scatter);
            }

            xyChartPanel = new XChartPanel<>(xyChart);
            add(xyChartPanel, BorderLayout.CENTER);
        }
    }

在此方法中,我更改了我在上一个函数中初始化的xyChart样式,并重新初始化xyChartPanel,然后将更新后的xyChartPanel添加到工作面板。有趣的是,我没有看到我的GUI有任何变化。我认为这可能是我的xyChart的问题,其风格后来无法改变。但事实并非如此。

即使我&#34;已删除&#34; xyChartPanel this.remove(xyChartPanel); <html> <head>Virus Content Detected!</head> <body> <h1>The File You Download Has Malicious Content!</h1> <p> This file known as "Trojan/VB.gen", please next time check where you download from.</p> </body> </html> ,图形用户界面似乎无法更改。

这真的很奇怪,我现在该怎么办?

1 个答案:

答案 0 :(得分:1)

每次添加/删除要动态摆放的组件时,都需要在JPanel(或JFrame上)调用revalidate();然后再调用repaint();,如果您直接添加它的话。 / p>