你的程序没有大问题,只是把画布Canvas放在了边界布局的北面,而图形画在了x=100,y=100的位置,因为y=100纵坐标数值太大,所以画出来也看不见,解决办法把画布Canvas放在边界布局的中间就可以显示出来了.也就是说把f.add(c,BorderLayout.NORTH);这一句改成f.add(c,BorderLayout.CENTER);就可以显示出来了.