14.2 组件中的坐标系统

在第11章中,我们看到了计算机屏幕拥有坐标系统,它被用来定义窗口的位置和尺寸。我们还看到了如何把组件添加到容器中。布局管理器创建的位置上。这个坐标系统类似屏幕坐标系统。原点在容器的左上角,x轴的水平方向从左向右,Y轴从上到下。 JWirindow或JFrame对象中的按钮位置用一对(x,y)像素坐标指定。这个坐标相对于屏幕上容器对象的左上角原点。下面你可以看到Stetcher应用程序窗口的坐标系统。

JAVA怎么打出坐标棋盘 java的屏幕坐标_2015二级java

当然,对于窗口对象,窗口的层级窗格拥有自己的坐标系统,其原点在窗格的左上角。这个坐标系用来决定菜单和内容窗格的位置。内容窗格也拥有自己的坐标系统。它被用来决定它所包含的组件位置。

不只是容器和窗口拥有自己的坐标系统,每个JButton对象也有自己的系统,比如JToolbar对象。实际上每个组件都拥有自己的坐标系统。

JAVA怎么打出坐标棋盘 java的屏幕坐标_2015二级java_02

很清楚,容器为了指定它所包含的组件位置需要一个坐标系统。你也需要一个坐标系统来绘制组件。例如,绘制一条直线。你需要能够指定组件相关的起始位置和结束位置,这里的坐标系统类似于容器中放置组件所应用的坐标系统,但并不完全一样。在绘图时显得要复杂些。比我们看一看在绘图时坐标系统是如何制定的。

Graphics2D类是从Graphics类派生来的,它定义了Java早期版本的设备环境。因此如果你希望使用旧的绘制方法,就继承Graphics2D类中的所有内容。但是,我们将注重Graphics2D提供的新的更加强大和更加灵活的功能。正像你将要看到的,图形设备环境的引用通常作为Graphic2D类型传递,因此你需要知道它。注意,Graphics和Graphics2D这两个类是抽象类,你不能直接地建立这两种类的对象。描述图形设备环境的对象完全取决于与之相关的组件,因此,为使用特定的组件,常常要获取图形设备环境。

组件的Graphics2D对象要将用户坐标镜像到设各坐标,因此,除了组件的用户坐标之外,它还包含了有关输出的目标设备的信息。把用户坐标转换成设各坐标所需信息被包含在三种不同类型的对象中:

GraphicsEnvirnment对象囊括了所有的图形设备(像GraphicsDevice对象)和你的计算机可用的字体(像Font对象).

GraphicsDevice对象囊括了有关屏幕或打印机这些特定设各的信息,并存储在一个或多个GraphicsConfiguration对象中。

GraphicsConfiguration对象定义了屏幕或打印机这样的特定设备的特性。显示器屏幕可有几个GraphicsConfiguration对象与之关联,每个GraphicaConfiguration对应一个特定的屏幕分辨率和可显示的颜色数组合。

图形设备环境还维护着绘图操作所需要的其他信息,如绘图颜色、线型以及对几个图形填充的颜色和图案。我们将在木章稍后的例子中看到如何利用这些属性进行操作。