Java核心技术:卷1笔记[5] 图形编程
来源:互联网 发布:网络谐音词大全 编辑:程序博客网 时间:2024/06/08 09:57
1.Java中的顶层窗口被称为框架,在Swing中为JFrame,它从AWT中的Frame类扩展而来。JFrame是少数几个不绘制在画布上的Swing组件之一。因此它的修饰部件(按钮、标题栏、图标等)是通过用户的窗口系统,而非Swing绘制的。
2.框架在建立时是不可见的,这使得程序员有机会在框架初次显式前为其增添一些组件。为了显式框架需要调用其show方法。
3.默认情况下,当用户关闭一个框架时,该框架会隐藏起来,但程序不会终止。可以定义用户关闭框架时的响应动作,如让程序退出:frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
4.设定框架位置:setLocation(x,y)
重新设定位置及大小:setBounds(x,y,width,height)
把框架设为最大:frame.setExtendedState(Frame.MAXIMIZED_BOTH)
5.得到屏幕大小:
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int w= screenSize.width;
int h= screenSize.height;
设定框架图标:
Image img=kit.getImage(“icon.gif”);
setIconImage(img);
6.添加组件至容器内容窗格
Container contentPane = frame.getContentPane();
Component c=…;
contentPane.add(c);
如果只需在框架中显式一个Swing组件,可以这样:
JComponent c=…;
frame.setContentPane(c);
7.把一个普通的JPanel添加到内容窗格中是没有什么意义的,它什么也不做。要使它变得有意义必须使用继承来创建一个新类,然后通过覆盖或者添加方法的手段来获得所需的额外功能。特别是,为了能在面板中进行绘制,则需要:
1)定义一个扩展了JPanel的新类;
2)覆盖paintComponent方法;该方法定义在所有Swing组件的父类JComponent类中,它含有一个Graphics类型的参数。为了确保超类完成自己的那份工作,必须在进行自己的绘制工作之前先调用super.paintComponent方法。
只要窗口需要重绘,不管是什么原因,事件处理器都会通知组件,它会引起所有组件中的paintComponent方法被执行。绝不要自己调用这个方法,不应干涉这个自动的过程。
8.如果需要强制性重绘屏幕,可以调用repaint方法,这个方法会使用正确配置了的Graphics参数引起对所有组件的paintComponent调用。
9.Graphics2D类从Graphics扩展而来,用来代替后者。Java 2D库使用面向对象的方式来组织几何形状,为了绘制形状,首先需要创建一个实现了Shape接口的类的对象,然后调用Graphics2D类的draw方法:
public void paintComponent(Graphics g){
Graphics2D g2=(Graphics2D)g;
Rectangle2D rect=…;
g.draw(rect);
}
10.设定颜色:
g2.setPaint(Color.RED);或者g2.setPaint(new Color(0,128,128));
如果使用的是Graphics对象而非Graphics2D,那么需要使用setColor方法设置颜色。
11.设置框架的背景颜色为用户桌面上所有窗口使用的默认值:
frame.setBackground(SystemColor.window)
12.填充闭合形状的内部区域只需用fill代替draw:
Graphics2D g2=(Graphics2D)g;
Rectangle2D rect=…;
g2.setPaint(Color.RED);
g.fill(rect);
13.设置字体:
Font f=new Font(“Serif”,Font.BOLD,36);
g2.setFont(f);
14.从本地读取图像:
String fileName=…;
Image image = ImageIO.read(new File(filename));
从网络获取图像:
String urlName=…;
Image image = ImageIO.read(new URL(filename));
显示图像:g.drawImage(image,x,y,null);
15.拷贝屏幕的一块区域:void copyArea(int x,int y,int width,int heigh,int dx,int dy)
- Java核心技术:卷1笔记[5] 图形编程
- Java核心技术:卷1笔记[1] Java基本编程结构
- #Java 核心技术卷一阅读笔记# 第十章 图形程序设计
- Java核心技术:卷1笔记[3] 继承
- Java核心技术 卷1 学习笔记
- Java核心技术卷一学习笔记1
- 核心技术 卷1 笔记
- Java核心技术卷1
- 图形程序设计(Java核心技术卷Ⅰ)
- Java 核心技术卷Ⅰ笔记
- Java核心技术卷1 java的基本程序设计结构笔记
- 【java核心技术笔记】图形程序设计
- FirstSample相关 《Java核心技术:卷1》第三章笔记
- Java核心技术:卷1笔记[2] 对象和类
- Java核心技术:卷1笔记[4] 接口和内部类
- Java核心技术:卷1笔记[6] 事件处理
- Java核心技术:卷1笔记[7] Swing用户界面组件
- Java核心技术:卷1笔记[8] applet和应用程序
- Java核心技术:卷1笔记[4] 接口和内部类
- 数字签名简介
- Facebook Messages & HBase
- JSP EL 自定义函数的使用
- RICHEDIT不能换行,其实是在样式里没设置多行
- Java核心技术:卷1笔记[5] 图形编程
- Ubuntu下ftp服务器配置方法 (高级配置)
- Oracle SQL优化 总结
- Java核心技术:卷1笔记[6] 事件处理
- Java核心技术:卷1笔记[7] Swing用户界面组件
- 进一步理解 javascript对象、数组、映射和哈希表
- Java核心技术:卷1笔记[8] applet和应用程序
- js控制上传文件大小
- Java核心技术:卷1笔记[9] 异常和调试