因为你把Kuai类定义为JPanel类的扩展类,所以Kuai相当于一个JPanel,把Kuai加入另一个JPanel mb,因为mb的默认布局是FlowLayout,而Kuai又没有指定大小,所以Kuai会缩成一团(成为一个点),也就不能正常显示了。解决方法是直接在Kuai类上画图,然后把它加入到JFrame中,去掉JPanel mb,因为Kuai本身就是JPanel.
改完的程序如下(改动的地方见注释)
import java.awt.*;
import javax.swing.*;
class Kuai extends JPanel{
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.red);
g.fillRect(150,0,30,30);
}
}
public class Kuang extends JFrame{
Kuai aa = new Kuai();
//JPanel mb = new JPanel(); //去掉这一句
Kuang(){
super("俄罗斯方块");
aa.setBackground(Color.black); //这里mb改成aa
this.add(aa,BorderLayout.CENTER);//这里mb改成aa
//mb.add(aa); //去掉这一句
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new Kuang();
}
}
运行结果