我遇到了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>
,图形用户界面似乎无法更改。
这真的很奇怪,我现在该怎么办?
答案 0 :(得分:1)
每次添加/删除要动态摆放的组件时,都需要在JPanel(或JFrame上)调用revalidate();
然后再调用repaint();
,如果您直接添加它的话。 / p>