上篇博客探讨了关于“如何显示一个窗口”。那么这篇来探讨“绘制内容”的基础知识。
在组件中显示信息
在 Java 中,框架被设计为放置组件的容器,可以将菜单栏和其他的用户界面元素放置在其中。通常情况下,应该在另一组件上绘制信息,并将这个组件添加到框架中。
JFrame 有四层面板。其中的根面板、层级面板和玻璃面板人们并不关心;它们是用来组织菜单栏和内容窗格以及实现观感的。Swing 程序员最关心的是 内容窗格 (content pane)。
调用
frame.add(c);
直接将一个绘制消息的组件添加到框架中。
绘制一个组件,需要定义一个扩展于 JComponent 的类,并覆盖其中的 paintComponent 方法。PaintComponent 方法中有一个 Graphics 类型的参数,这个参数保存着用于绘制图像和文本的设置,例如,设置的字体或当前的颜色。在 Java 中,所有绘制都必须使用 Graphics 对象,其中包含了绘制图案、图像和文本的方法。
下面方法给出了如何创建一个能够进行绘制的组件:
class MyComponent extends JComponent {
public void paintComponent(Graphics g) {
code for drawing
}
}
无论何种原因,只要窗口需要重新绘制(例如,用户在扩大窗口或极小化窗口后,又恢复窗口的大小时会引发重新绘图),事件处理器就会通告组件,从而引发执行所有组件的 paintComponent 方法。
一定不要自己调用 paintComponent 方法。在应用程序需要重新绘图时,这个方法将被自动地调用,不要人为地干预这个自动的处理过程。
从上述代码段中可以看到,paintComponent 方法只有一个 Graphics 类型的参数。对于屏幕显示来说,Graphics 对象的度量单位是像素。坐标 ( 0 , 0 ) 指出所绘制组件表面的左上角。
显示文本是一种特殊的