1

JFrameAのサブクラスがあります。Aのサブクラスである別のクラスBがあります。JButtonのようにフレームBに新しいコンポーネントを追加したいと思います。私のコードは次のとおりです。

public B() extends A {
    //Calling super class constructor
    super();

    //Creating and adding a button 
    JButton btn = new JButton();
    this.add(btn);

    //other codes
}

フレームを表示すると、ボタンが追加されず、スーパークラスのフレームとそのコンポーネントのみが表示されます。サブクラスBのフレームにこれらのボタンを追加するにはどうすればよいですか?

更新:これが私のコードの要約版です。スーパークラスListObjectsでBorderLayoutを使用しまし

package assignment2;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ListAndModifyCustomer extends ListObjects {

public ListAndModifyCustomer() {
    //Calling super class constructor
    super("Customers");

    //Adding listener to the ok button
    super.selectBtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            //codes to create another JFrame

            dispose();  //Closing the frame
        }
    });

    //Adding button to the panel
    super.panel.add(new JButton("NO"));

    JPanel jp = new JPanel();
    jp.add(super.selectBtn);

    super.add(jp, BorderLayout.SOUTH);
}
}
4

3 に答える 3

0

しますthis.getContentPane().add(btn)
どのコンポーネント、レイアウトなどが使用されているかについての情報がないため、これ以上コメントすることはできません。

于 2012-09-12T16:19:29.627 に答える
0

最も可能性の高い理由はBorderLayoutです。ABorderLayoutは、その場所ごとに1つのコンポーネントのみを含めることができます。場所を指定しない場合は、そのCENTER場所が使用されます。

したがって、ListObjectsクラスとクラスの両方が場所を指定せずにをListAndModifyCustomer呼び出すとadd、2番目のコンポーネントのみが表示(および追加)されます。

于 2012-09-13T06:13:19.660 に答える
0

サブクラスにパネルを作成し、そのパネルにすべてのアイテムを追加し、そのパネルをスーパークラスのフレームに追加すると、コンポーネントが表示されることがわかりました。

于 2012-09-17T05:10:40.280 に答える