[英]Grid being draw off screen
I am having a bit of trouble making this grid be drawn 10 pixels from the top and 10 pixels from the left of the Frame. 我在使此网格从框架的顶部绘制10个像素并从框架的左侧绘制10个像素时遇到麻烦。
I can make it do it by increasing this.getY() + 10 to a higher number, just wondering why if is remove the + 10 it getting drawn off screen. 我可以通过将this.getY()+ 10增加到一个更大的数字来做到这一点,只是想知道为什么要删除+ 10使其脱离屏幕。
Ignore the variable names and any formatting I just threw this together 忽略变量名和任何格式,我只是把它们放在一起
package griddrawing;
import java.awt.*;
import javax.swing.*;
public class Grid extends JFrame
{
private int TILEWIDTH;
private int TILEHEIGHT;
private int COLS;
private int ROWS;
private int defaultX;
private int defaultY;
private int currentX;
private int currentY;
public Grid()
{
setSize(800,400);
TILEWIDTH = 30;
TILEHEIGHT = 30;
COLS = 10;
ROWS = 10;
defaultX = this.getX() + 10;
defaultY = this.getY() + 10;
currentX = 0;
currentY = 0;
}
@Override
public void paint(Graphics g)
{
super.paint(g);
currentX = defaultX;
currentY = defaultY;
g.setColor(Color.black);
for(int i = 0; i < COLS; i++)
{
for(int k = 0 ; k < ROWS; k++)
{
g.drawRect(currentX - (TILEWIDTH / 2), currentY - (TILEHEIGHT / 2), TILEWIDTH, TILEHEIGHT);
g.drawString("" + k, currentX, currentY);
currentY += TILEWIDTH;
System.out.println("COL: " + i + " ROW: " + k + " Current X: " + currentX + " Current Y: " + currentY);
}
currentY = defaultY;
currentX += TILEHEIGHT;
}
}
}
Instead of both: 代替两者:
paintComponent(Graphics)
method of a JComponent
or JPanel
. JComponent
或JPanel
的paintComponent(Graphics)
方法。 theComponent.setPreferredSize(Dimension)
or override that same method. theComponent.setPreferredSize(Dimension)
或重写相同的方法。 pack()
. pack()
。 That lot should mean you no longer need to account for any offset (which might change by platform or PLAF). 该批次应该意味着您不再需要考虑任何偏移量(可能会因平台或PLAF而变化)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.