我必须编制一个精确分辨率为128x128的游戏,但Canvas不想匹配。
if ($(window).scrollTop() >= top) {
nav.addClass('navbar-fixed-top');
body.addClass('padding-fifty');
$('.navbar-brand').addClass('visible');
} else {
nav.removeClass('navbar-fixed-top');
body.removeClass('padding-fifty');
$('.navbar-brand').removeClass('visible');
}
Canvas的大小(getWidth(),getHeight)是134 * 128的128 * 128的实例..
答案 0 :(得分:1)
我认为getHeight将返回134.那就是。是窗口的标题。 Jframe显然是更大的部分吗?
答案 1 :(得分:0)
不要打电话给你的班级窗口。有一个使用该名称的AWT组件,因此非常混乱。类名应该更具描述性。
不要扩展Canvas。使用Swing时,您可以扩展JComponent或JPanel以进行自定义绘制。
不要在班级中创建框架。框架不是该类的属性,不属于该属性。
我必须编制一个精确分辨率为128x128
的游戏
在Windows上适合我。
它绝对是getWidth(),
框架的最小宽度。框架必须能够绘制标题栏和左/右边框中的所有按钮。
所以我猜想因为你使用的是BorderLayout,所以框架的大小调整到最小,然后根据布局管理器的规则调整自定义类的大小。
因此,如果您希望尊重面板的首选大小,请在框架上尝试不同的布局管理器。例如,使用FlowLayout,它将遵循添加到其中的任何组件的大小。
简单示例:
import java.awt.*;
import javax.swing.*;
public class GamePanel extends Canvas
{
public GamePanel()
{
setBackground( Color.RED );
}
@Override
public Dimension getPreferredSize()
{
return new Dimension(128, 128);
}
private static void createAndShowGUI()
{
GamePanel panel = new GamePanel();
JFrame frame = new JFrame("GamePanel");
frame.setLayout( new FlowLayout() );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setLocationByPlatform( true );
frame.pack();
frame.setVisible( true );
System.out.println(panel.getSize());
System.out.println(frame.getSize());
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}