因为你extends JPanel,而JPanel根本就没有带String的构造函数,所以你没有构造出一个JPanel的实例,所以JPanel都没有显示,里面的button就更不会显示出来了,这是我的理解。另外我不明白你为什么要重载JPanel和JFrame,没有起到什么作用,还可能因为重载提高危险性

解决方案 »

  1.   

    class MakeButton extends JPanel
    {
    public MakeButton(String text)
    {
    JButton button=new JButton(text);
    }
    }
    MakeButton button=new MakeButton("blue");button是个MakeButton对象,并不是MakeButton里的JButton
    建议写一个方法
    public JButton MakemyButton(String text)
    {
    JButton button=new JButton(text);
    return button;
    }
    然后再调用button=new MakeButton().MakemyButton("blue");
      

  2.   

    楼上的不要乱说,其实问题很简单。
    class MakeButton extends JPanel
    {
    public MakeButton(String text)
    {
    JButton button=new JButton(text);
    }
    }
    这段代码只是构造了一个按钮,但是并没有把它添加到MakeButton 这个 JPanel类中
    你在MakeButton的构造函数中在添加一条this.add(button);语句就可以了
    具体如下:
    class MakeButton extends JPanel
    {
    public MakeButton(String text)
    {
    JButton button=new JButton(text);
                      this.add(button);
    }
    }
      

  3.   

    to jackandjack(儒聆风云jack) 
    但这样的话,在MM里显示的是panel的特性,而不是button的了,
    不知楼主要的是哪一种