我有一个JFrame A的子类。我有另一个类B,它是A的子类。我想像JButtons一样向框架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);
}
}
答案 0 :(得分:0)
执行this.getContentPane().add(btn)
。由于没有关于使用哪些组件,布局等的信息,我无法评论更多。
答案 1 :(得分:0)
最可能的原因是BorderLayout
。 BorderLayout
只能在其每个位置包含一个组件。如果您未指定位置,则会使用CENTER
位置。
因此,如果您的ListObjects
班级和ListAndModifyCustomer
班级在未指定位置的情况下拨打add
,则只有seceond组件可见(并已添加)。
答案 2 :(得分:0)
我发现如果我们在子类中创建一个面板并将所有项添加到该面板并将该面板添加到超类的框架中,则组件将变为可见。