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)