1

現在、レイアウトが BorderLayout に設定された JFrame の「ウィンドウ」があります。西と中央のセクションにパネルがあり、南に 2 つのパネルが交互に配置されています。西のセクションには 5 つのラベルがあります。中央のセクションには、5 つの JTextField コンポーネントがあります。そして、南のセクションでは、2 つのパネル (両方とも FlowLayout) &(それぞれに 2 つの別々のボタンが保持されます) を交互に使用したいと考えています。

現在、初期化しており、南セクションには正しい 2 つのボタンがありますが、イベント アクション リスナーを呼び出すと、メソッドの半分だけが正しく呼び出されます。舞台裏ではメニュー項目がリスナーに接続されており、正しく動作しているようです。クリア テキスト方式は機能しますが、サウス パネルを変更しても機能しません

初期化されるパネルとフレームは次のとおりです (これらはクラス コンストラクターで初期化されます)。

    myWindow = new JFrame();
    myWindow.setLayout(new BorderLayout());
    myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    sPanel1.add(prevButton);
    sPanel1.add(nextButton);
    sPanel2.add(okButton);
    sPanel2.add(cancelButton);

    myWindow.add(sPanel1, BorderLayout.SOUTH);
    myWindow.add(wPanel, BorderLayout.WEST);
    myWindow.add(cPanel, BorderLayout.CENTER);
    //so here, at this line, i have tried the adding sPanel2 at the south position,
    //after i have added sPanel1.  The result is that sPanel2 overrides sPanel1 (like i 
    //assumed it would).  However, the same doesnt work in the editAddEvent method    
     //below. both lines are called but only the cleartextfields method works.  
     //why is this?

  public class myEvent implements ActionListener{   
     @Override
     public void actionPerformed(ActionEvent arg0) {
        myWindow.add(sPanel2, BorderLayout.SOUTH);
        clearTextFields();  
        myWindow.revalidate();
        myWindow.repaint();
        Container content = myWindow.getContentPane();
        content.revalidate();
        content.repaint();
     }
}

public void clearTextFields(){
    fNameTxt.setText("");
    mNameTxt.setText("");
    lNameTxt.setText("");           
}

clear textfields メソッドは完全に機能し、JTextFields をクリアします

4

0 に答える 0