Java核心技术笔记-第7章

图形程序设计(看了一半发现Swing现在已经不用了。。。。)

1.AWT(在不同平台上是不一致的),Swing(在不同的平台上是一致的),绝大多数Java用户界面设计都是用Swing。观感使得不同平台上的元素又有些不一样。

2.创建框架
(1)Swing中有一个JFrame类,它扩展于AWT中的Frame类。JFrame就是用来编写框架的(顶层窗口)
(2)JFrame的修饰组件(右上角三个按钮,顶部标题栏,左上角图标)是由用户的窗口系统控制,不是由Swing控制。
(3)所用的Swing组件都必须由事件分派线程(event dispatch thread),使用EventQueue.invokeLater(..)方法进行配置,如:

EventQueue.invokeLater(new Runnable(){
    public void run(){
        ...//创建框架
    }
};

(4)创建步骤:[1]创建JFrame对象 [2]使用setSize方法设置窗口大小 (该设置一般放在对象的构造函数中)[3]使用setDefaultCloseOperation(..)方法设置关闭框架时 响应动作(关闭程序等)。[4]框架起初是不可见的,需要使用setVisible方法设置可见
注:在包含多个框架的程序中,不能关闭一个框架就让程序退出,应该只是让框架隐藏起来,在所有框架都被隐藏起来时再让程序退出。

3.框架定位
(1)setLocation和setBounds用于设置窗口的位置,setIconImage用于告诉窗口系统显示哪个图标,setTitle改变标题栏的名字,setResizable设置窗口大小是否允许用户改变,setLocationByPlatform(true)由系统来决定窗口的位置。
(2)JFrame的继承层次:

JFrame -> Frame -> Window -> Container -> Component -> Object
                                                     ^
                                                     |
                                                JComponent
                                                     ^
                                                     |
                                                  JPnanel

JFrame中的方法有JFrame定义的方法,也有很多方法是从其他类继承来的。Component类(所有GUI对象的祖先)和Window类(Frame类的超类)需要仔细的研究一下。
(3)创建合适的框架大小

//需要先获取屏幕的分辨率大小:
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int sizeWidth = screenSize.width;
int sizeHeight = screenSize.height;
//使用setSize方法设置框架大小,先width,后height,不要写反了
setSize(sizeWidth/2, sizeHeight/2);

4.在组件中显示信息
(1)JFrame有四层面板,其中最关心的是内容面板。Java SE1.4之前,需要先获取内容面板Container contentPane = frame.getContentPane();然后contentPane调用add方法添加组件。而现在可以直接食用frame的add方法。
(2)添加一个组件:[1]继承JComponent类,并重写paintComponent(Graphics g)方法(也可以继承JPanel类,但是在重写paintComponent方法时,需要加一句:super.paintComponent(g);用来用背景色绘制面板)
[2]在paintComponent(Graphics g)方法中绘制想要在组件中绘制的,比如g.drawString(…)
[3]重写getPreferredSize()方法,返回一个有 首选 宽度和高度的Dimension对象。告诉用户这个组件有多大。
[4]frame调用add方法,将组件添加进来。
注意:如果frame调用pack()方法来设置框架大小,那么框架的大小就会依赖于组件(如果都是标准组件)的 首选宽度和高度,以正好将组件包含进来,所以getPreferredSize()返回的Dimension对象大小一定要与组件大小差不多(可以大一些,但是不要小)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值