java - 父类(super class)中的按钮仍在子类中

标签 java swing inheritance

在父类(super class)的构造函数中,我有一些按钮可以通往其他子类。但是,这些子类也继承了这些按钮,即使它们不在其构造函数中。如何删除这些按钮,使其不再显示在我的子类中?我正在使用 javax.swing。

好的,这是一个代码示例。我很确定我做的 OOP 完全错误......

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

public class Big extends JFrame implements ActionListener
{
    static private JPanel p1;
    static private JButton b1;    
    public Big(){    
        setSize(700,400);
        p1 = new JPanel();
        b1 = new JButton("Go to subclass");
        b1.addActionListener(this);
        p1.add(b1);
        add(p1, BorderLayout.NORTH);
        setVisible(true);
    }

    public void actionPerformed (ActionEvent e){
        if(e.getSource() == b1){
            setVisible(false); 
            Small subclass = new Small();
        }
    }
}

二等:

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


public class Small extends Big implements ActionListener
{
    static private JButton b2;
    static private JPanel p2;
    public Small(){    
        setSize(700,400);
        p2 = new JPanel();
        b2 = new JButton("Hello!");
        p2.add(b2);
        add(p2, BorderLayout.SOUTH);
        setVisible(true);
    }
    public void actionPerformed (ActionEvent e){}
}

最佳答案

根据您发布的代码,我认为没有理由使用继承。我建议你干脆不要继承,问题就会消失。

另外:

  • 不要使用静态变量。

关于java - 父类(super class)中的按钮仍在子类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19611288/

相关文章:

java - 真正的交互式命令行

java - Java Paint 方法中 while 循环后绘图删除

python - 理解 Python super() 和 __init__() 方法

java - 比较Java中不同类的对象字段

c++ - 用继承和多态重载 '<<'?

java - 究竟什么是串口通信?

java - 如何为处理其他异常时抛出的异常获取正确链接的堆栈跟踪?

java - 10秒的滑动窗口?

java - JPanel 绘图不工作

Java - 如何仅更改 JLabel 的一部分字体/添加边框