当我看到我的应用程序时,它绘制的图像不在(0,0)上,而是在程序的中间位置,所以我调试了我的程序,我看到clipRegion.lox是456而loy是130,这是程序绘制的位置(0,0)。所以我认为Clip Region的位置是错误的,但我不知道如何修复它。有什么帮助吗?
代码:
public void changeState(int bef,int cur){
if(bef==1){
if(cur==2){
intro.setVisible(false);
this.setContentPane(play);
play.init();
play.setVisible(true);
}
}
}
这是我的Panel首次启动时。在play.init()中,我将socket设置为与服务器程序连接,并启动声音文件。就是这样。
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(new Color(255,255,255));
g.drawImage(backgroundImg, 0, 0, this);
g.drawImage(player, 368, 280, this);
for(int i=0;i<60;i++){
for(int j=0;j<100;j++){
if(map[i][j]==1){
g.drawImage(stone, (j-10)*32-dx, (i-10)*32, this);
}
else if(map[i][j]==2){
if(i>0&&map[i-1][j]==0) g.drawImage(grass, (j-10)*32-dx, (i-10)*32, this);
else g.drawImage(dirt, (j-10)*32-dx,(i-10)*32,this);
}
}
}
g.drawString(servermessage, 320, 200);
}
另外,我重新绘制了它,它吸引了(0,0),但它没有全屏显示。
我认为绘制的图像大小与(456,130)到(800,600)大小相同,所以我觉得图片已经剪掉了。
由于声誉低,我无法发布我的照片......还有任何帮助吗?
答案 0 :(得分:0)
this.setBackground(new Color(255,255,255));
不要在绘画方法中设置背景。在类的构造函数中设置背景。
它不是在(0,0)上绘制我的图像,而是在我的程序中间的某个地方, g.drawImage(backgroundImg,0,0,this);
不,图像是在(0,0)绘制的,它相对于面板的位置。这意味着面板相对于框架没有被绘制在(0,0)处。这可能是因为您使用的布局管理器将面板定位在框架的中心。检查您的布局代码。
我看到clipRegion.lox是456,loy是130和
如果您认为剪裁区域错误,可能是因为您的面板没有首选尺寸。每当您进行自定义绘制时,您应该覆盖getPreferredSize()
方法以返回面板的大小,以便布局管理器可以正常工作。也许首选大小应该是图像的大小?
阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。