帆布

2014-02-19 124 views
0

JFrame的像素精度嘿,所以我实现在一个JFrame对象画布,但有一个轻微的烦恼:帆布

如果我指定的框架是有一定尺寸,然后在标题栏被列入垂直尺寸。类似地,窗口的左边缘与指定大小一起被包括。我使用绝对定位来确定标题栏的像素数,并使得我的JFrame的像素数量更大,但我怀疑这是与平台无关的。是否有合适的方法来获取/设置可以出现在JFrame的实际可用内容中的像素数量?

回答

2

通常,您将“画布”(不应该是java.awt.Canvas,但最好是javax.swing.JPanel)放到框架的内容窗格中。当您将首选大小设置这个组件,事后调用pack()在框架上,然后框架将有权大小服从组件的首选尺寸:

canvas = new MyClassExtendingJPanel(); 
canvas.setPreferredSize(new Dimension(123,456)); 
frame.getContentPane().add(canvas); 
... 
// At the end: 
frame.pack(); 
frame.setVisible(true); 
+0

好了,你建议的一部分并发症是由awt和swing的混合引起的,也许呢?有趣的,谢谢。我以这种方式了解到,未来我会尝试适应学习显示像素,通过不知何故只挥杆 – user3251651

+0

我没有明确说出这一点,但*“混合重量级和轻量级组件”*(如http:// www .oracle.com/technetwork/articles/java/mixing-components-433992.html)总是有点问题。它*应该*一般工作,但并不总是按预期工作,我建议仅使用Swing组件 – Marco13