1

解決済み: @Desolator は、以下のコメントで私のコーディングを完全に機能させました。

わかりましたので、相互にリンクする 3 つのクラスを作成しました。

SplashScreen > ProjectAssignment > CompareSignature

私が話したいクラスは、スプラッシュスクリーン クラスです。

したがって、このクラスには3つのメソッドがあります:

public static void createAndShowGUI() - このメソッドは、GUI を作成および表示するためのすべての情報を保持します - JFrame frame = new JFrame("Welcome!"); 等...

public void actionPerformed(ActionEvent e) - このメソッドは、クリックして次の GUI を開くことができるボタンを提供します - if(e.getSource()==enterButton) など...

public static void main(String[] args) - このメソッドは単に「createAndShowGUI();」を持っています。コードの実行時に GUI が表示されるようにします。

私がする必要があるのは、 JButtoncreateAndShowGUIがクリックされたときに SplashScreen クラスを閉じる別のアクションを JButton に与えることができるようにすることですが、私の問題は次のとおりです。

  1. メソッドが staticであるため、actionPerformed メソッド内のメソッドJFrame frame = new JFrame("");から参照できませんcreateAndShowGUIcreateAndShowGUI

  2. 今、あなたは「「静的」キーワードを取り出して、変数セクションに「JFrame フレーム;」を配置するだけです」と言っています...そうすると、メソッドpublic static void main(String[] args)は取得されずcreateAndShowGUI();、GUI は表示されません

  3. actionPerformed メソッドを入れてみました:

    if(e.getSource()==enterButton){
    System.exit(0);
    }
    

と...

   if(e.getSource()==enterButton){
   frame.dispose();   //Cannot reference frame from static createAndShowGUI method
   }

ボタンクリックでSplashScreenクラスを閉じることはできますか?前もって感謝します

4

1 に答える 1

0

ここから次の例を取り上げました。メソッドの名前が同じなので、createAndShowGUI同じ名前を付けたのかもしれません... ボタンとフレームを破棄する適切なリスナーで拡張しました。あなたの質問は私には少しわかりにくかったですが、この例があなたの質問に答えると思います。

public class FrameDemo {
private static void createAndShowGUI() {
    final JFrame frame = new JFrame("FrameDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton button = new JButton("Exit");
    button.setPreferredSize(new Dimension(175, 100));
    frame.getContentPane().add(button, BorderLayout.CENTER);

    ActionListener buttonListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            frame.dispose();
        }
    };
    button.addActionListener(buttonListener);

    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}
}
于 2013-02-23T12:01:11.690 に答える