java界面的面板里加入绘图为什么不能正常显示?
importjava.awt.*;importjavax.swing.*;classKuaiextendsJPanel{publicvoidpaint(Graphicsg...
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(){ mb.setBackground(Color.black); //面板颜色 黑 this.add(mb,BorderLayout.CENTER); //面板 mb.add(aa); //把绘图方块 加入到面板 …… } }
展开
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();
}
}
运行结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询