con*_*kus 17 java swing jframe
所以我已经在java中编程了一个学期左右,我已经有几次这个问题,最后还是开始问.
如果我制作一个JFrame然后设置大小,setSize(400,800)例如.框架实际上并不800 pixels长.据我所知,它实际上更像是770 (or maybe 769) pixels漫长的.此外,如果您将垂直尺寸设置得非常低(低于30),则框架甚至不显示,只有操作系统中的顶部窗口栏和框架不会变大,直到您转到超过30的值(所以setSize(400,0)看起来一样setSize(400,20)).为什么这样,它不难解决,但它很奇怪,我很好奇为什么会这样?
如果您需要更多关于任何事情的信息,我会告诉您.
Tal*_*han 19
JFrame SetSize()包含Area + Border.
我认为你必须设置的大小ContentPane的那
jFrame.getContentPane().setSize(800,400);
Run Code Online (Sandbox Code Playgroud)
所以我建议你使用嵌入在JFrame中的JPanel,然后在那个JPanel上绘图.这会最小化您的问题.
JFrame jf = new JFrame();
JPanel jp = new JPanel();
jp.setPreferredSize(new Dimension(400,800));// changed it to preferredSize, Thanks!
jf.getContentPane().add( jp );// adding to content pane will work here. Please read the comment bellow.
jf.pack();
Run Code Online (Sandbox Code Playgroud)
我是从Javadoc读到的
该
JFrame课程略有不兼容Frame.与所有其他JFC/Swing顶级容器一样,JFrame包含一个JRootPane唯一的子级.根窗格提供的内容窗格通常应包含显示的所有非菜单组件JFrame.这与AWT Frame案例不同.例如,要将子项添加到AWT框架中,您需要编写:
frame.add(child);但是,使用
JFrame您需要将子项添加到JFrame内容窗格中:
frame.getContentPane().add(child);
Kyl*_*yle 13
这可能是因为框架的大小包括边框的大小.
框架是具有标题和边框的顶级窗口.框架的大小包括为边界指定的任何区域.可以使用getInsets方法获得边界区域的尺寸.由于边框区域包括在框架的整体尺寸中,边框有效地遮挡了框架的一部分,约束了可用于渲染的区域和/或将子组件显示到具有左上角位置(矩形)的矩形. left,insets.top),宽度大小为 - (insets.left + insets.right) - (insets.top + insets.bottom).
资料来源:http: //download.oracle.com/javase/tutorial/uiswing/components/frame.html
| 归档时间: |
|
| 查看次数: |
103614 次 |
| 最近记录: |