0

私が取り組んでいるアプリケーションには、ユーザーの選択に基づいて 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;
    }

ただし、機能していないため、同じフレームを複数回起動できます。どうすればこれを防ぐことができますか?

4

3 に答える 3

6

どうすればこれを防ぐことができますか?

フレームをモーダルJDialogまたはJOptionPane.

于 2013-02-21T18:38:50.837 に答える
2

フレームにシングルトン パターンを使用します。

public class MainFrame extends JFrame() {

 private static MainFrame instance;

 public static MainFrame getInstance(//parameters) {
   if (instance == null){
    instance = new MainFrame(//parameters)
 }
    return instance;
 }

 private MainFrame(//parameters){}

}
于 2013-02-21T18:45:39.060 に答える
2

単純に、2回呼び出すことはできませんsetVisibleJFame2 つのウィンドウは、2 つのオブジェクトがある場合にのみ表示されます。JFrameあなたのを作りますSingleton
私が助けてくれることを願っています。

于 2013-02-21T18:39:40.340 に答える