-1

以下に示すのは、最初のフレームで「次へ」ボタンをクリックすると呼び出される Java クラスです。パラメータを送信します。これは、以下のプログラムに getContentPane() を送信します。ここでは、パラメータにアクセスし、その可視性を false に設定します。 「戻る」ボタンを使用して、最初のフレームの前のページのデータに移動しますが、[戻る] をクリックすると、前のフレームが表示されません。

それは単純なプログラムです。2番目のフレームからテキスト入力を取得する必要があり、再びホーム画面に戻る必要がある場合、このプログラムでこれをどのように達成できますか

  public class firstframe extends JFrame{

 public firstframe()
 {
    getContentPane().setLayout(null);

    JButton next=new JButton("Next");
    next.setBounds(100,100,100,100);
    getContentPane().add(next);


    next.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ev){

            Container c=getContentPane();

        }
         new signup(c);
    }); 
  }
   public static void main(String ar[]){
   firstframe f=new firstframe();
     f.setVisible(true);
    f.setSize(1365,740);
f.show();

} }

public class signup extends JFrame{

    public signup(Container d)
    {
        final Container c=d;
        c.setVisible(false);
        final Container e;
        e=c.getParent();
        e.setLayout(null);
        JButton back=new JButton("Back");
        back.setBounds(100,100,100,100);
        e.add(back);
        e.setVisible(true);


        back.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ev){
                e.setVisible(false);
                d.setVisible(true);
            }

        }); 
    }
}//
4

1 に答える 1

0

申し訳ありませんが、あなたのコード スタイルは良くありません。コードの意味を理解するのを妨げる不必要な割り当てが多すぎ、変数名が短すぎます。

あなたが何をしているか見てください。signup()割り当てるメソッドでは、 andの親コンポーネントであるe=c.getParent();ことを意味します。次に、アクション リスナーで非表示にし、表示しようとします。しかし、の親であるように、その親が非表示である間、 が表示されることはありません。ecdbackededd

このコードの簡単な修正は、backボタン アクション リスナーを次のように変更することです。

back.setVisible(false);
d.setVisible(true);

そしてもちろんbackファイナルにする

final JButton back=new JButton("Back");
于 2012-08-04T11:29:00.887 に答える