7.1Swing概述
·Swing仅仅提供了能力更加强大的用户界面组件;Swing指“被绘制的”用户界面类;AWT是窗口工具箱的底层机制;
7.2创建框架
·AWT库中Frame类:勇于描述顶层窗口;
·Swing版本名为JFrame,用于扩展Frame类,是极少数不绘制在画布上的Swing组件,修饰部件由用户的窗口系统绘制;
·Swing类位于javax.swing包中;所有的Swing组件必须由事件调度线程进行配置,线程将鼠标点击和键盘敲击转移到用户接口组件;
·定义用户关闭框体的响应动作:frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
·框体默认为隐藏;为了显示框体,main方法需要调用框架的setVisible方法;初始化结束后main方法退出,但未终止程序,仅终止主线程,事件调度器保持程序在激活状态直至关闭框体或调用System.exit方法;
7.3框架定位
·setLocation和setBounds方法用于设置框架的位置;
·setIconImage用于告诉窗口系统在标题栏、人物切换窗口等位置显示哪个图标;
·setTitle用于改变标题栏的文字;
·setResizable利用一个boolean值确定框架的大小是否允许用户改变;
7.4框架属性
·组件类的很多方法由获取/设置这一对操作形式出现;getTitile()→setTitle();这一对获取/设置被称为一种属性;对于类型为boolean的属性,获取类方法由is开头;
·属性饱含属性名和类型,get与set后对应词语即为相应的属性名;
7.5决定框架大小
·默认框架大小为0X0;
·获取屏幕大小:Toolkit类的静态方法getDefaultToolkit得到Toolkit对象,调用getScreenSize方法,以Dimension对象的形式返回屏幕大小;
·编写使用多个显示屏幕的应用程序,应该利用GraphicsEnvironment和GraphicsDevice类获得显示屏幕大小;
·GraphicsDevice类允许在全屏下执行应用程序;
7.6在组件中显示信息
·将菜单栏和其他用户界面元素放置在组件中,再将组件添加到框架中;
·所有的绘制必须使用Graphics对象,其中包含了绘制图案,图像和文本的方法;
·只要窗口需要重新绘图,时间处理器就会通知组件,从而引发所有组件的paintComponent方法;不需自己调用paintComponent方法,在重新绘图时,这个方法将被自动调用,不要认为干预这个过程;
7.7 2D图形
·使用JAVA 2D库绘制图形,需要获取一个Graphics2D类对象;paintComponent方法会自动获得一个Graphics2D类对象;
·绘制图形,先创建一个Shape接口的类的对象,然后调用Graphics2D类中的draw方法;
7.8颜色
·使用Graphics2D类的setPaint方法可以为图形环境上所有后续绘制操作选择颜色;g2.setPaint(Color.RED); g2.drawString("Warning!",100,100); ;将draw替换为fill即可填充封闭图形内部;
·绘制多种颜色:选择颜色→绘制图形→选择另一种颜色→ 绘制另一个图形;
·Color类标准色:BLACK,BLUE,CYAN,DARK_GRAY,GRAY,GREEN,LIGHT_GRAY,MAGENTA,ORANGE,PINK,RED,WHITE,YELLOW;
·创建Color对象:Color(int redness,int greenness,int blueness);定制颜色例子:g2.setPaint(new Color(0,128,128));
7.9为文本设置特殊字体
·字体名由字体家族名和一个可选的“Bold”后缀组成;
·GraphicsEnvironment类中getAvailableFontFamilyNames方法返回所有可用的字体名;
·使用某种字体绘制字符,利用字体名、字体风格、字体大小来创建一个Font类对象:Font sansbold14 = new Font ( " SansSerif " , Font.BOLD , 14) ;
7.10图像
·读取本地图像:String filename=“……”;Image’image=ImageIO.read(new File(filename));读取URL图片:String urlname=“……”;Image image=ImageIO.read(new URL(urlname));
·显示图片可用Graphics类的drawImage方法