当前位置:编程学习 > JAVA >>

关于JFrame,Canvas边界的问题

比如说做一个贪吃蛇,如果直接划线的话,边界部分是回被标题栏之类遮住的,怎么在设置了jframe的指定大小后,在可见部分上来画线,比如定义格子WIDTH为30,行数ROWS为16,列为COLS是10,jframe的大小如何设置?还是WIDTH*ROWS,WIDTH*COLS的话 可见部分肯定画不出想要的图案了.解决这个问题有几种方法?jpane?canvas?
哪位大神给个简单的代码. 画布 jframe --------------------编程问答-------------------- 没人么. --------------------编程问答-------------------- 求大神,求帮助啊~ --------------------编程问答-------------------- 里面的大小要随容器的变化而变化。 --------------------编程问答-------------------- 可以有两种方案:小格子的大小固定,但行列数随Panel的size变化而调整;小格子的行列数不变,格子的大小变化。
每次paint时,根据你的方案重新计算各行、列的坐标,然后画 --------------------编程问答--------------------
引用 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);
}
}

}


我想要的效果是 窗口是固定了的,现在代码里我没固定,我在画布上画了格子,但是被标题栏之类的遮住了,怎么做才能做到画布的大小是窗口的可见部分的大小?笨方法是可以试出来,可有没有好的方法呢
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,