我正在用Java进行游戏,只是将所有与窗口相关的代码从基于java.awt重写为javax.swing。不久之后,我意识到事情变得有些复杂了,因此我做了一些研究,发现了如何绘制事物,如何设置JFrame的大小等。但是由于某种原因,我的JFrame的大小总是比我指定的尺寸超出10像素。在这种情况下,我希望它是640
x 640像素。
这是我的代码:
package chrononaut;
import java.awt.*;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
@SuppressWarnings("serial")
public class GameJFrame extends JFrame
{
//Background color:
static Color bgrCol = new Color(12, 4, 64);
//Size:
final static int size = 640;
//The component that does the actual drawing:
static GameJComp drawingComp = new GameJComp();
//Constructor:
public GameJFrame()
{
//Calling super() and setting the title:
super("Chrononaut");
//Setting icon image:
try
{
Image icon = ImageIO.read(getClass().getResource("/icon/icon 1.png"));
setIconImage(icon);
}
catch (IOException e) {}
//make it closable:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Setting the size:
Container c = getContentPane();
Dimension d = new Dimension(size, size); //for some reason, it goes 10 pixels beyond the given values
c.setPreferredSize(d);
pack();
//Adding the drawing component to the content pane:
getContentPane().add(drawingComp);
//Making sure the window size stays constant:
setResizable(false);
//Centering position:
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension s = tk.getScreenSize();
setLocation(s.width/2-getWidth()/2, s.height/2-getHeight()/2);
//Background color:
setBackground(bgrCol);
//Make it visible:
setVisible(true);
}
public void drawAll()
{
drawingComp.drawAll();
}
public void closeGame()
{
dispose();
System.exit(0);
}
}
当我运行它时,即使我调用setPreferredSize(d),JFrame边框内的空间似乎也只有650像素而不是640像素。我尝试使尺寸d
=新尺寸(size-10,size-10);
这似乎确实有效,但是我不知道在其他平台上会遇到什么天气。我在网络上其他任何地方都没有看到这个问题,所以我完全不知道为什么会这样做。:(
这是与setResizable(false);
您尝试设置窗口大小后使用有关的问题。
问题是(至少在Windows上)可调整大小的窗口和不可调整大小的窗口之间边框的大小不同。
致电setResizable
前致电pack
如果您想要更好(通常更可靠)的窗口居中方法,请考虑使用
setLocationRelativeTo(null);
代替
setLocation(s.width/2-getWidth()/2, s.height/2-getHeight()/2);
Toolkit.getScreenSize
没有考虑任务栏占用的空间…
本文向大家介绍jQuery中大家不太了解的几个方法,包括了jQuery中大家不太了解的几个方法的使用技巧和注意事项,需要的朋友参考一下 jQuery近些年来仍旧是web开发中最受欢迎的类库,虽然大家褒贬不一,但是仍旧不失为一款最流行的Javascript, 在事件中return false 可能大家在编写事件相关代码的时候,有时候会使用return false语句,代码如下: 以上代码中,我们点击
我使用Infinispan缓存来存储值。代码每10分钟写入一次缓存,缓存大小约为400mb。它的生存时间约为2小时,最大条目数为1600万条,尽管目前在我的测试中,条目数没有超过200万条左右(我可以通过检查jconsole中的MBean/指标来了解这一点)。 当我启动jboss时,java堆大小是1.5Gb到2Gb。为jboss分配的最大内存的-Xmx设置是4Gb。 当我禁用Infinispan
我刚刚开始使用模块。我试图从超市抓取产品,有一个网站似乎总是以。我已经对堆栈溢出进行了一些研究,似乎没有人有同样的问题。我的代码非常简单: 我也试图按照这个答案的建议修改用户代理,但是结果还是一样 有人能解释一下urllib模块内部的哪些默认设置可能导致这个问题吗?还是因为网站屏蔽了僵尸程序?网站的其他产品页面也不行。
我在cassandra设置中有“commitlog_segment_size_in_mb: 32”,但下面的错误表示最大尺寸为16777216,约为16mb。我在看修复下面错误的正确设置吗? 我指的是基于 http://mail-archives.apache.org/mod_mbox/cassandra-user/201406.mbox/<53A40144.2020808@gmail.com>中
问题内容: 在Java中,是否可以获得不含标题和其他边框的JFrame的宽度和高度? frame.getWidth()和frame.getHeight()1似乎返回包括边框在内的宽度。 谢谢。 问题答案:
我是Spock测试框架的新手,我试图为我正在工作的一个android项目做一些测试。我目前测试的这些对象是PJO,所以可以用常规的Spock测试它们。出于某种原因,我一直在我的一个对象上调用isAlive方法,但我知道它被调用了,感觉我已经在调试器中运行了它,它被调用了。所以我希望有人能引导我知道我做错了什么。 下面是我的测试代码: 任何帮助都将不胜感激。我已经在我能想到的每种配置中尝试过了...