jbi*_*lls 3 java eclipse size swing
我正在写一个基于平铺的平台游戏.目前我正试图让400块瓷砖一次显示出来.这是我的小组.在顶部和左侧,一切都很好,但在右侧和底部,图像被几个像素切断.每张图片为32*32.全部blocks都是初始化的.没有为空.这有什么不对?
public class Pane extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
Timer timer;
boolean setup = false;
Block[][] blocks;
Level level;
public Pane()
{
level = new Level();
level.Generate();
blocks = level.Parse();
setBackground(Color.WHITE);
timer = new Timer(25, this);
timer.start();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
for(Block[] b : blocks)
{
for(Block bx : b)
{
// Debug code if(bx.letter.equals("D"))
// Debug codeSystem.out.println(bx.y*32 +" = "+ bx.x*32);
g2d.drawImage(bx.bpic, bx.x*32, bx.y*32, this);
}
}
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
}
Run Code Online (Sandbox Code Playgroud)
在右侧和底侧,图像被几个像素切断
如果你的意思是整个面板的右侧和底侧(不是单个瓷砖),那么它可能是与LayoutManager相关的问题.解决方案取决于您用于添加JPanel的组件的布局管理器.
您可以尝试使用以下命令指定JPanel的最小/首选大小:
Pane pane = new Pane();
pane.setPreferredSize(...);
pane.setMinimumSize(...);
Run Code Online (Sandbox Code Playgroud)
为了根据生成的图像的大小(32*COL,32*ROW)指定其最小尺寸.不幸的是,setPreferredSize调用的有效性取决于Pane父组件的布局管理器.