如何精确的计算JFrame中菜单栏、边框及客户区(内容面板)的大小
来源:互联网 发布:群发短信软件下载 编辑:程序博客网 时间:2024/05/11 16:53
要使用到的函数有:
JFrame类中函数中setVisible()或show()函数。
JFrame类中getInsets()函数,获得内容面板边框到JFrame边框的距离。
JPanel类中getWidth()和getHeight()函数,获得面板的宽度和高度。
注意:getInsets()、getWidth()和getHeight()函数必须放在setVisible()或show()函数之后,才能获得正确的像素值,否则获得的结果为0。
情况一:getInsets()、getWidth()和getHeight()函数放在setVisible()或show()函数前面
package a;import java.awt.*;import javax.swing.*;public class Test extends JFrame{private static final long serialVersionUID = 1L;public Test(){this.setSize(600,600);this.setLocation(300,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel contentPane=new JPanel();this.setContentPane(contentPane);contentPane.setLayout(null);int width=contentPane.getWidth();int height=contentPane.getHeight();Insets a=this.getInsets();this.setVisible(true);System.out.println("菜单栏的高度为:"+a.top);System.out.println("JFrame左边框的宽度:"+a.left);System.out.println("JFrame右边框的宽度:"+a.right);System.out.println("JFrame下边框的宽度:"+a.bottom);System.out.println("面板的宽度:"+width);System.out.println("面板的高度:"+height);}public static void main(String[] args) {// TODO Auto-generated method stubnew Test();}}运行结果:
菜单栏的高度为:0
JFrame左边框的宽度:0
JFrame右边框的宽度:0
JFrame下边框的宽度:0
面板的宽度:0
面板的高度:0
情况二:getInsets()、getWidth()和getHeight()函数放在setVisible()或show()函数后面
package a;import java.awt.*;import javax.swing.*;public class Test extends JFrame{private static final long serialVersionUID = 1L;public Test(){this.setSize(600,600);this.setLocation(300,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel contentPane=new JPanel();this.setContentPane(contentPane);contentPane.setLayout(null);this.setVisible(true);int width=contentPane.getWidth();int height=contentPane.getHeight();Insets a=this.getInsets();System.out.println("菜单栏的高度为:"+a.top);System.out.println("JFrame左边框的宽度:"+a.left);System.out.println("JFrame右边框的宽度:"+a.right);System.out.println("JFrame下边框的宽度:"+a.bottom);System.out.println("面板的宽度:"+width);System.out.println("面板的高度:"+height);}public static void main(String[] args) {// TODO Auto-generated method stubnew Test();}}运行结果:
菜单栏的高度为:30
JFrame左边框的宽度:8
JFrame右边框的宽度:8
JFrame下边框的宽度:8
面板的宽度:584
面板的高度:562
注意:要获取内容面板的宽度,必须在jf.setcontentPane(contentPan)放在jf.setVisible(true)的前面。
请看如下代码:
package mysnake;import java.awt.Color;import javax.swing.JFrame;import javax.swing.JPanel;public class Snake extends JPanel{private static final long serialVersionUID = 1L;private JFrame jf=new JFrame("贪吃蛇");private JPanel contentPan=new JPanel();private JPanel pan2=new JPanel();public Snake(){jf.setSize(600,600);jf.setLocation(350,300);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);jf.setContentPane(contentPan);contentPan.setLayout(null);System.out.println(contentPan.getWidth());contentPan.add(this);//this.setBounds(5, 5, 500, 500);this.setBackground(Color.red);contentPan.add(pan2);}public static void main(String[] args) {new Snake();}}输出:0
package mysnake;import java.awt.Color;import javax.swing.JFrame;import javax.swing.JPanel;public class Snake extends JPanel{private static final long serialVersionUID = 1L;private JFrame jf=new JFrame("贪吃蛇");private JPanel contentPan=new JPanel();private JPanel pan2=new JPanel();public Snake(){jf.setSize(600,600);jf.setLocation(350,300);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setContentPane(contentPan);jf.setVisible(true);contentPan.setLayout(null);System.out.println(contentPan.getWidth());contentPan.add(this);//this.setBounds(5, 5, 500, 500);this.setBackground(Color.red);contentPan.add(pan2);}public static void main(String[] args) {new Snake();}}输出:584
- 如何精确的计算JFrame中菜单栏、边框及客户区(内容面板)的大小
- Oracle如何精确计算row的大小
- Oracle如何精确计算row的大小
- 去除菜单栏和工具栏之间的分割线--去除客户区边框
- FlexAIR如何去除窗口的边框、菜单栏
- 如何更改Jframe里Jpanel的大小
- 如何动态设置客户区的大小?
- JFrame(框架)中添加和设置JPanel(面板)的方法
- JFrame(框架)中添加和设置JPanel(面板)的方法
- JFrame(框架)中添加和设置JPanel(面板)的方法
- JFrame(框架)中添加和设置JPanel(面板)的方法
- 客户区的大小
- html+css制作任意大小边框一致的面板
- 拖动去掉边框的JFrame
- MFC面板中显示内容及按钮消息的添加
- 精确计算UIWebView内容的高度
- JFrame边框的大小——Windows XP, 1024*768屏幕分辨率
- 左边框的内容加到右边框的内容中
- 【库函数】va_start()、va_end()和vsnprintf()函数应用
- mysql创建表varchar类型不给长度会报错
- iOS 删除文件夹下所有文件的方式
- 异常:已引发: "已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 31 - 加密(ssl/tls)握手失败) 已成功与服务器建立连接
- python 学习总结
- 如何精确的计算JFrame中菜单栏、边框及客户区(内容面板)的大小
- Java将日志文件放到相对项目路径下
- 设计模式心得(二) 策略模式
- List、Set与Map
- 2013-11-10 实验之剪格子游戏(数字分组思想)bug已消除版本见2013-11-24
- 压缩日志脚本
- 文件的随机读写-获取当前位置函数 ftell()
- 第十一周--循环求数列
- TeamMgr-1.3 Grails&Groovy摸索篇