关于JFrame,Canvas边界的问题

唯爱颖 2013-12-03 09:25:58
比如说做一个贪吃蛇,如果直接划线的话,边界部分是回被标题栏之类遮住的,怎么在设置了jframe的指定大小后,在可见部分上来画线,比如定义格子WIDTH为30,行数ROWS为16,列为COLS是10,jframe的大小如何设置?还是WIDTH*ROWS,WIDTH*COLS的话 可见部分肯定画不出想要的图案了.解决这个问题有几种方法?jpane?canvas?
哪位大神给个简单的代码.
...全文
723 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
唯爱颖 2013-12-05
  • 打赏
  • 举报
回复
引用 4 楼 ace62 的回复:
可以有两种方案:小格子的大小固定,但行列数随Panel的size变化而调整;小格子的行列数不变,格子的大小变化。 每次paint时,根据你的方案重新计算各行、列的坐标,然后画
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;

public class MainScreen extends JFrame {
	public static final int WIDTH = 35;
	public static final int ROWS = 16;
	public static final int COLS = 10;
	Mycanvas canvas = new Mycanvas();
	
	public MainScreen() {
		super("俄罗斯方块");
		setLayout(new BorderLayout());
		add("Center", canvas);
		setBounds(400, 20, COLS*WIDTH, ROWS*WIDTH);
		//setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		
	}
	
	public static void main(String[] args) {
		new MainScreen();
	}

	class Mycanvas extends Canvas {
		
		public void paint(Graphics g) {
			Color c = g.getColor();
			setBackground(Color.GRAY);
			g.setColor(Color.DARK_GRAY);
			for(int i=0; i<ROWS+1; i++) {
				g.drawLine(0, MainScreen.WIDTH * i, COLS * MainScreen.WIDTH, MainScreen.WIDTH * i);
			}
			for(int i=0; i<COLS+1; i++) {
				g.drawLine(MainScreen.WIDTH * i, 0, MainScreen.WIDTH * i, MainScreen.WIDTH * ROWS);
			}
		}
	} 
}
我想要的效果是 窗口是固定了的,现在代码里我没固定,我在画布上画了格子,但是被标题栏之类的遮住了,怎么做才能做到画布的大小是窗口的可见部分的大小?笨方法是可以试出来,可有没有好的方法呢
ace62 2013-12-05
  • 打赏
  • 举报
回复
可以有两种方案:小格子的大小固定,但行列数随Panel的size变化而调整;小格子的行列数不变,格子的大小变化。 每次paint时,根据你的方案重新计算各行、列的坐标,然后画
  • 打赏
  • 举报
回复
里面的大小要随容器的变化而变化。
唯爱颖 2013-12-04
  • 打赏
  • 举报
回复
求大神,求帮助啊~
唯爱颖 2013-12-03
  • 打赏
  • 举报
回复
没人么.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧