私はJava Swingに深刻な問題を抱えています。パネルをJava Swingに添付されたパネルから削除するには?
これは私が私のチャートを初期化する方法で、すべてが今罰金だ分野でJPanel
は、私が作成したxyChart
でそれを初期化するよう、xyChartPanel
が宣言されます。このステップが完了すると、私はJPanel
に中心を置く(xyChartPanel
に描かれた)チャートを見ることが大丈夫です。コードを書いています。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);
}
今、問題が来る、私は実際に私がラジオボタン上の自分の行動に反応し、私のチャートのスタイルを変更したい、私のチャートはすべての時間そのままにしたくはありません。
私はこの方法で
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);
}
}
参照を取るupdateChartPanelStyle(JRadioButton styleButton)
方法を書いて、私は最後の関数で初期化xyChart
のスタイルを変え、そしてxyChartPanel
を再初期化し、作業に更新xyChartPanel
を追加しますパネル。興味深いことに、私は自分のGUIに変更が見られませんでした。私はこれが私のxyChart
のスタイルに後で変更できない問題であると思った。しかし、これは事実ではありません。
this.remove(xyChartPanel);
でxyChartPanel
を「削除」しても、GUIは変更されていないようです。
これは本当に奇妙です。どうすればいいですか?
コード内で 'updateChartPanelStyle'をどのように呼び出すのですか? –
変更するたびに新しいXChartPanelを作成する必要があるかどうかわかりません。レンダリングスタイルを設定してrepaintを呼び出すだけです。 – MadProgrammer