現在、レイアウトが 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 をクリアします