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