java界面的面板里加入绘图为什么不能正常显示?

2025-03-22 23:42:46
推荐回答(1个)
回答1:

因为你把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();
 }
}

运行结果