私が取り組んでいるアプリケーションには、ユーザーの選択に基づいて JPanel から作成されたフレームが含まれています。同じアイテムを 2 回選択した場合に、ユーザーが同じフレームの複数のインスタンスを起動できないようにしようとしています。そのために書いた条件がこちらです。
メインクラス:
public void showPieGraphFrame()
{
final PieGraph gPieGraph = new PieGraph("Traffic Type Distribution", counterOne, counterTwo);
gPieGraph.pack();
RefineryUtilities.positionFrameOnScreen(gPieGraph, 0.35, 0.03);
if(!gPieGraph.isVisible())
{
gPieGraph.setVisible(true);
}
}
複数のインスタンスを防止したい PieGraph クラス:
public class PieGraph extends ApplicationFrame implements ActionListener {
public PieGraph(final String title) {
super(title);
// create a menubar
setJMenuBar(createMenuBar());
// create a dataset...
final PieDataset dataset = trafficTypeDataset();
// create the chart...
final JFreeChart chart = createChart(dataset);
// add the chart to a panel...
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(width, height));
setContentPane(chartPanel);
}
private JFreeChart createChart(final PieDataset dataset) {
final JFreeChart chart = ChartFactory.createPieChart("Test Chart", dataset, false, false, false);
final PiePlot plot = (PiePlot) chart.getPlot();
return chart;
}
ただし、機能していないため、同じフレームを複数回起動できます。どうすればこれを防ぐことができますか?