JApplet を拡張するクラス、メニューバー、および JPanel を拡張するクラスで構成されるアプレットを作成しています (したがって、アプレットにはメニューバーと JPanel が表示されます)。
このクラスでは、JPanel にいくつかのテキスト フィールドを追加および削除します。これはすべてうまくいきます。ここが難しいところです。最初にしか機能しません。JPanel にいくつかの新しいテキストフィールドを追加すると、JPanel に追加されて表示されますが、JFrame のメニューバーが機能しなくなります。
コードが広すぎるので、その一部のみを投稿します。
JPanel を JApplet に追加するコードは次のとおりです。
public class Simulator extends JApplet implements ItemListener, ActionListener {
Container pane = getContentPane();
canvas = new DrawCanvas();
pane.add(canvas, BorderLayout.LINE_END);
}
JPanel のコードは次のとおりです。
class DrawCanvas extends JPanel {
public void paintComponent(Graphics g) {
if(textfield != null)
remove(textfield);
textfield = new JTextField();
this.add(textfield);
}
}
これは最初は機能しますが (何も削除されていない場合)、2 回目はメニューバーが機能しなくなります。this.add(textfield); を省略した場合 行、メニューバーは機能し続けます。