GUI基础概述.doc_第1页
GUI基础概述.doc_第2页
GUI基础概述.doc_第3页
GUI基础概述.doc_第4页
GUI基础概述.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目前,大多数软件都是图形用户界面(Graphics User Interface, 简称GUI)的,并且程序的运行是靠事件驱动 (event-driven) 的。这样的应用程序可以使用户很方便地与程序进行交互。本章主要介绍使用Java开发图形用户界面程序的方法,其中包括容器和布局管理器,另外还将介绍Java小程序的开发以及图形绘制等内容。 Java GUI基础1.1 概述图1就是一个图形用户界面的应用程序,其中包含的图形界面元素有窗口、菜单、工具栏、按钮、选项卡等。该程序是JDK自带的演示程序,通过运行jdk_installdemojfcswingset2.html或jdk_install demojfcSwingSet2SwingSet2.jar程序可以得到该界面,这里jdk_install是JDK的安装目录。图1 GUI演示程序在Java 1.2之前, Java提供了一个AWT类库,Sun把它叫做抽象窗口工具箱(Abstract Window Toolkit, 简称AWT) 。为了开发GUI程序,程序员需要使用该库中有关的类,它为程序员提供了构建GUI程序的组件,如Frame、Button、Label等。这些组件是通过java.awt包提供的。AWT最初是为设计小应用程序界面而开发的。由于AWT存在严重缺陷,Sun从Java 1.2 版开始提供了一个新的组件库Swing。Swing可以说是第二代GUI开发工具集,它是通过javax.swing包提供的,javax.swing包也是Java基础类库(Java Foundation Classes,JFC)的组成部分。由于Swing组件比AWT组件有许多优点,所以新开发的程序应该使用Swing组件而不应该再使用AWT组件。但是,要注意Swing组件并没有完全取代AWT,它只是替代了AWT包中的图形用户界面组件(如Button、TextFiels、TextArea等),AWT中的一些辅助类(如Graphics、Color、Font、LayoutManager等)仍然保持不变。另外,Swing仍然使用AWT的事件模型。1.2 Swing组件简介javax.swing包中提供了新的用于创建图形用户界面的组件,因为这些组件的实现是完全独立于平台的,因此通常被称为“轻量级”组件,而AWT组件被称为“重量级”组件。Swing提供了更多的组件,功能更强大,不仅能够开发开发功能强大的应用程序界面,也能够开发小应用程序界面。原来在AWT包中的大部分组件名称在Swing包中都以大写字母J开头的,如AWT中按钮类为Button,在Swing中按钮类为JButton。除此之外,AWT组件在java.awt包中,Swing组件在javax.swing包中。在开发新的图形用户界面的程序时,AWT组件和Swing组件不能混合使用。1. 组件及层次在Java语言中,与图形用户界面相关的包有多个,其中比较重要的有java.awt包、java.awt.event包、javax.swing包。图2给出了有关包中常用的类及类的层次结构。ObjectAWTEventColorFontFontMetricsGraphicsComponentContainerPanelAppletJAppletWindowFrameDialogJFrameJDialogJComponent图2 Java GUI所用类的层次结构图图2中Applet类在java.applet包中,以J开头的类在javax.swing包中,其他类在java.awt包中。下面简单介绍其中常用的类。Component 组件类:它是所有图形用户界面类的父类。Container 容器类:它是Component类的一个子类,是一种可以容纳其他组件和容器的组件。Container类的子类都是容器,有三个常用的子类容器:Panel、Window、JComponent。JComponent轻量组件类:它是所有轻量组5件类的父类,它的子类都在javax.swing包中,如JButton、JLabel、JMenu、JRadioButton、JList、JTextField、JTextArea、JscrollPane等。Graphics 图形类:它是一个抽象类,它提供了在容器中绘制字符串和简单图形的图形环境。Color 颜色类:这个类用来处理图形和组件的颜色。例如,可以为JFrame、JPanel等组件指定背景色和前景色,也可以指定绘制的线条、图形和字符串的颜色。Font 字体类:在使用绘图对象绘制字符串时可以指定字体,其中包括字体、字型和大小。JApplet 小应用程序类:它是Applet类的子类,创建基于Swing的Java小应用程序需要继承JApplet类。JFrame 框架窗口类:它是一个顶级窗口。在Java图形应用程序中,它是包含其他Swing组件的最外层容器。JDialog 对话框类:它是一个弹出式对话框,一般用来接收用户的输入和显示有关信息。JComponentJTextComponentAbstractButtonJButtonJToggleButtonJCheckBoxJRadioButtonJMenuItemJMenuJCheckBoxMenuItemJRadioButtonMenuItemJOptionPaneJMenuBarJLabelJListJPanelJComboBoxJScrollBarJScrollPaneJFileChooserJPopupMenuJProgressBarJTabbedPaneJColorChooserJToolTipJSliderJTableJTreeJEditorPaneJTextPaneJTextAreaJTextFieldJPasswordField在基于Swing的设计中,JComponent类是非常重要的类。它是所有轻量级组件的根类。图 3是JComponent类及其子类的类层次结构图:图3 JComponent及其子类的层次结构上图中JTextComponent类在javax.swing.text包中,而其它子类都在javax.swing包中。关于这些类的使用,将在后续章节中详细介绍。2. 组件分类上述这些组件按功能大致可以分为三类: 容器组件:容器组件又可以分为三类: 顶层容器:包括JFrame、JApplet、JDialog; 通用容器:包括JPanel、JScrollPane、JSplitPane、JTabbedPane、JToolBar; 专用容器:包括JInternalFrame、JLayeredPane、JRootPane等。 基本组件:基本组件包括JButton、JTextField、 JComboBox、JList、JMenu、JSlider等。这些组件有的主要用于信息的显示,如JLabel、JProgressBar、JToolTip等,有的可以在其中编辑信息,如JTextArea、JtextField、JFileChooser、JColorChooser、JTable、JTree等。 菜单组件:菜单组件包括JMenuBar、JMenu、JMenuItem、JRadioButtonMenuItem、JCheckBoxMenuItem和JPopupMenu等。这些组件主要用于构建各种菜单。1.3 JComponent类和Container类的常用方法本节主要介绍常用组件和容器的操作方法。1. JComponent类及其方法JComponent抽象类是所有Swing组件的父类,其中定义了每个组件都可以使用的方法,常用的方法有: public void setSize(int width,int height) 设置组件或容器的大小。 public void setVisible(boolean b) 设置组件或容器是否可见。 public void setBackground(Color c) 设置组件的背景颜色,Color为颜色类。 public Color getBackground() 返回组件的背景颜色,Color为颜色类。 public void setForeground(Color c) 设置组件的前景颜色。 public Color getForeground() 返回组件的前景颜色。 public void setFont(Font f) 设置组件上使用的字体,Font为字体类。 public Font getFont() 返回组件上使用的字体。 public Graphics getGraphics() 返回组件的图形上下文(graphics context)或绘图对象,Graphics为图形上下文类,使用该类对象可以在组件上绘制图形。 public void setToolTipText(String text) 设置组件上的提示信息。 public String getToolTipText() 返回组件上的提示信息。2. Container类及其方法Container类是所有容器类的父类,在编写GUI程序时经常要使用这个类的方法。容器组件的特点是:容器中可以容纳其他组件,通过调用容器的add()方法把其他组件添加到容器中。添加到容器中的组件位置和大小由容器的布局管理器决定(Layout Manager)。如果需要手工控制组件在容器中的大小和位置,应该将容器的布局管理器设置为null,即调用容器的setLayout()方法,并将参数指定为null,然后调用组件的setLocation()方法设置组件在容器中的位置、调用setSize()或setBounds()方法设置组件的大小。Container类中的常用方法: public Component add(Component comp) public Component add(Component comp, int index)向容器中添加组件,index参数指定组件添加到容器中的位置,无index参数则添加到默认位置。 public void remove(Component comp) 从容器中清除指定的组件。 public void setLayout(LayoutManager mgr) 设置容器的布局。参数mgr是布局管理器对象,它决定组件在容器中如何摆放。 public void paint(Graphics g) 在容器上绘制图形。 public void paintComponents(Graphics g) 在容器上绘制图形。 public void update(Graphics g) 更新容器上绘制的图形。1.4 简单的框架窗口1. 创建简单的框架窗口每个使用Swing GUI的程序必须至少有一个顶层Swing容器。对于GUI应用程序来说,一般应该有一个主窗口,也称为框架窗口。在Swing中,框架窗口是由JFrame对象实现的。JFrame类常用的构造方法有: public JFrame() 创建一个没有标题的窗口对象。 public JFrame(String title) 创建一个以title为标题的窗口对象。下面的程序创建了一个空的框架窗口。程序SimpleFrame.javaimport javax.swing.*;public class SimpleFrame public static void main(String args)JFrame frame = new JFrame(Simple Frame ); frame.setSize(400,240); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame. EXIT _ON_ CLOSE);_程序中使用JFrame类的构造方法创建一个框架窗口对象frame。由于新创建的JFrame对象的大小是00像素的,所以使用组件类的setSize()方法将窗口对象frame的大小设置为400200像素。框架创建之后是不可见的,因此还使用了语句setVisible()方法将框架设置为可见。setSize()和setVisible()方法都是定义在Component类中的,所以JFrame类可以继承它们。最后程序调用了JFrame类的setDefaultCloseOperation()方法,该方法的功能是当用户点击窗口的关闭按钮时结束程序的运行,参数JFrame. EXIT _ON_ CLOSE是JFrame类中定义的常量。程序运行结果如图4所示:图4 最简单的框架窗口从图4中可以看到,框架窗口具有边框、标题栏、最大化按钮、最小化按钮以及关闭按钮。如果使用早期平台,关闭窗口可以通过注册监听器实现。下面是用匿名内部类实现的监听器: frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );用该段程序替换上面一行程序,效果相同。2. 继承JFrame类在上面程序中创建的窗口是在main()方法中创建了一个JFrame对象,然后设置大小并显示了该窗口。一切都是在main()方法内完成的。这在创建比较简单的窗口时还可以,如果窗口比较复杂,就会使得main()方法的内容过多。因此,一般应该创建一个继承JFrame类的子类,然后编写程序创建该类对象。程序 SimpleFrame.javaimport javax.swing.*;public class SimpleFrame extends JFrame public SimpleFrame() this(Simple Frame); public SimpleFrame(String title) super(title); setSize(400,250); setLocation(350,250); /设置窗口显示位置 setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) SimpleFrame frame = new SimpleFrame(); _SimpleFrame类继承了JFrame类,在其构造方法中创建用户界面。程序中setLocation()方法设置窗口在屏幕中显示的左上角位置。3. 框架窗口居中默认情况下,程序运行时框架显示在屏幕的左上角。要指定框架在屏幕上的显示位置,需要使用JFrame类中的setLocation(x,y)方法,该方法把框架的左上角放置在屏幕的(x,y)处。如果要把框架放置在屏幕的中央位置,需要知道屏幕和框架的宽和高,以便确定框架左上角在屏幕上的坐标。屏幕的宽和高可以由java.awt.Toolkit类得到。Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();int screenWidth = screenSize.width;int screenHeight = screenSize.height;在用下面方法得到框架的大小,然后可计算得到框架居中的左上角坐标x和y的值。Dimension frameSize = frame.getSize();int x = (screenWidth-frameSize.width)/2;int y = (screenheight-frameSize.height)/2;最后再调用frame的setLocation()方法设置框架的左上角位置。frame.setLocation(x,y);完整的程序如下所示:程序 CenterFrame.javaimport java.awt.*;import javax.swing.*;public class CenterFrame public static void main(String args) JFrame frame=new JFrame(Simple Frame ); frame.setSize(400,250);Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); int screenWidth=screenSize.width; int screenHeight=screenSize.height; Dimension frameSize=frame.getSize(); int x=(screenWidth-frameSize.width)/2; int y=(screenHeight-frameSize.height)/2; frame.setLocation(x,y); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); _该程序运行后,框架窗口显示在屏幕的中央。1.5 在框架中添加组件实际上JFrame对象是由多个窗格组成的,如图5所示。要向框架中添加组件,必须先获得框架的内容窗格(content pane)对象,然后将组件添加到内容窗格对象上。Root PaneContent PaneGlass Pane图5 JFrame容器的层次结构向框架窗口中添加组件有两种方法:(1)调用JFrame类的getContentPane()方法获得框架的内容窗格对象,它是Container类的对象,然后调用内容窗格对象的add()方法将组件添加到内容窗格中,代码如下所示:Container contentPane = getContentPane();contentPane.add(new JButton(OK);(2)建立一个JPanel类的中间容器,把组件添加到中间容器中,再用顶层容器的setContentPane(Container contentPane)方法将中间容器设置为顶层容器的内容窗格,代码如下所示:JPanel panel = new JPanel()panel.add(new JButton(OK);frame.setContentPane(panel)无论使用哪种方法,都要注意容器采用什么布局管理器,并根据需要设置正确的布局管理器。例如下面程序实现在窗口中添加两个按钮,内容窗格采用流式布局管理器。程序FrameWithButton.javaimport java.awt.*;import javax.swing.*;public class FrameWithButton extends JFrame JButton jButton1,jButton2; Container cp = null;public FrameWithButton() this(Frame With Button); public FrameWithButton(String title) super(title); jButton1 = new JButton(OK); jButton2 = new JButton(Cancel); cp = getContentPane(); FlowLayout layout = new FlowLayout(); cp.setLayout(layout); cp.add(jButton1); cp.add(jButton2); setSize(400,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args)JFrame frame = new FrameWithButton(Frame With Button);_程序的运行结果如图6所示。 图6 程序FrameWithButton的运行结果从程序的运行结果看,两个按钮被添加到框架窗口中。请试着将程序中加黑的两行去掉,再重新编译并运行该程序,看结果如何,为什么?布局管理器在许多其他窗口系统中,组件在窗口中的放置是通过硬编码实现的,即通过指定组件在窗口中的绝对位置来对组件布局,如将一个按钮放置在窗口坐标的(10,10)处。使用硬编码的方法,用户界面可能在一个系统下显示正常,而在其他系统下显示不正常。Java语言的一个特点是强调程序的平台无关性。对于图形用户界面同样是这样。在Java的图形界面程序中,它是通过为每种容器提供了布局管理器来实现组件布局的。所谓布局管理器就是为容器设置一个LayoutManager对象(这个对象就是布局管理器对象),由它来管理组件在容器中摆放的顺序、位置、大小以及当窗口大小改变后组件如何变化等特征。通过使用布局管理器机制就可以实现GUI的跨平台性,同时避免为每个组件设置绝对位置。常用的布局管理器有:FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout,这些类都是在java.awt包中定义的。每种容器都有默认的布局管理器,也可以为容器指定新的布局管理器。可以使用容器的方法setLayout(LayoutManager layout)设置容器的布局。其中参数LayoutManager是接口,LayoutManager2是它的子接口。下面分别介绍以上几种常用的布局管理器在图形化用户界面中的应用。2.1 BorderLayout布局管理器BorderLayout布局也叫边界式布局,它将容器分成东、南、西、北、中五个区域,每个区域可放置一个组件或其他容器。北占据容器的上方,东占据容器的右侧,等等。中间区域是在东、南、西、北都填满后剩下的区域。BorderLayout布局管理器的构造方法有: public BorderLayout(int hgap, int vgap) 该构造方法创建一个布局管理器对象,hgap和vgap分别指定使用这种布局时组件之间的水平间隔和垂直间隔距离,单位为像素。 public BorderLayout() 该构造方法创建一个BorderLayout布局管理器对象,使用这种布局时组件之间没有间隔。向BorderLayout布局的容器中添加组件应该使用add(Component c, int index)方法,c为添加的组件,index为指定的位置。指定位置需要使用BorderLayout类定义的五个常量:BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.EAST、BorderLayout.WEST、BorderLayout.CENTER。如果不指定位置,组件添加到中央位置。若要改变容器的布局管理器须调用容器的setLayout()方法,它的格式为: public void setLayout(LayoutManager layout)下面的程序演示了BorderLayout布局的使用:程序 BorderDemo.javaimport java.awt.*;import javax.swing.*;public class BorderDemo extends JFrame JButton jButton1,jButton2, jButton3,jButton4,jButton5; public BorderDemo() Container cp = getContentPane(); jButton1 = new JButton(North); jButton2 = new JButton(South); jButton3 = new JButton(West); jButton4 = new JButton(East); jButton5 = new JButton(Center); /cp.setLayout(new BorderLayout(10,20); cp.add(jButton1, BorderLayout.NORTH); cp.add(jButton2, BorderLayout.SOUTH); cp.add(jButton3, BorderLayout.WEST); cp.add(jButton4, BorderLayout.EAST); cp.add(jButton5, BorderLayout.CENTER); setSize(400,300); setTitle(BorderLayout Demo); setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) BorderDemo window = new BorderDemo(); _程序运行结果如图7所示。图 7 程序BoderDemo的运行结果该程序中没有设置内容窗格的布局管理器,这时容器使用默认的布局管理器。若重新设置布局管理器,需要使用容器的setLayout()方法。将程序中的注释行注释取消,就可以重新设置容器的布局管理器,这时组件的水平间距为10个像素,垂直间距为20个像素。使用BorderLayout 布局管理器,当窗口的大小改变时,容器中的组件大小相应改变。当窗口垂直延伸时,东、西、中区域也延伸;而当窗口水平延伸时,南、北、中区域也延伸。JFrame、JApplet、JDialog对象的内容窗格缺省使用的是BorderLayout的布局管理器。注意 当某个区域没有添加组件时,中央组件会占据无组件的空间,但若没有中央组件,四周组件都有,中央区域空出,请读者自己修改程序,去掉某个区域的组件,观察程序运行效果。2.2 FlowLayout布局管理器FlowLayout布局也叫流式布局,它是最简单的布局管理器。如果一个容器设置为这种布局管理器,那么当向容器中添加组件时组件是从左到右,从上到下,一个一个地放置到容器中,一行放不下,放到下一行。 采用这种布局管理器的容器,当调整窗口大小后,布局管理器会重新调整组件的摆放位置,组件的大小和相对位置不变,组件的大小采用最佳尺寸。如果要将某个容器的布局管理器设置为这种布局,需要使用构造方法创建一个布局管理器对象,然后使用容器的setLayout()方法将容器设置为这种布局管理器。FlowLayout类常用的构造方法有三个: public FlowLayout(int align, int hgap, int vgap)该方法根据指定添加到容器中组件的对齐方式(align)、水平间距(hgap)和垂直间距(vgap)。对齐方式align的取值必须为下列三者之一:FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER,它们是FlowLayout定义的整型常量,分别表示左对齐、右对齐和居中对齐。水平间距是指水平方向上两个组件之间的距离,单位是像素,垂直间距是行之间的距离,单位也是像素。 public FlowLayout(int align)该构造方法只指定对齐方式。组件之间的水平间距和垂直间距使用默认值,默认值是5个像素。 public FlowLayout()使用该构造方法构造的对象,对齐和间距都采用默认值,默认的对齐方式是居中对齐,水平间距和垂直间距的默认值也是5个像素。JPanel对象的缺省的布局管理器是FlowLayout。下面的程序使用了FlowLayout布局管理器,并在内容窗格中添加多个组件,这些组件的大小不同:程序FlowWindow.javaimport java.awt.*;import javax.swing.*;public class FlowWindow extends JFrame public FlowWindow() Container cp = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.CENTER,10,20);cp.setLayout(layout); cp.add(new JButton(Button 1); cp.add(new JButton(2); cp.add(new JButton(Button 3); cp.add(new JButton(Long-Named Button 4); cp.add(new JButton(Button 5); setSize(400,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) FlowWindow window = new FlowWindow(); _该程序中的下面两个语句:FlowLayout layout = new FlowLayout(FlowLayout.CENTER,10,20);cp.setLayout(layout);也可以用一个语句实现:cp.setLayout(new FlowLayout(FlowLayout.CENTER,10,20);实际上该语句创建了一个匿名FlowLayout对象。程序的运行结果如图8所示:图 8 FlowLayout布局的应用在JDK 5.0版中,可以使用add()方法直接将组件添加到框架窗口对象frame中。这实际上是当调用frame的add()方法时,运行时系统自动得到内容窗格对象,然后将组件添加到内容窗格中。注意:直接使用add()方法需要注意设置容器的布局管理器,否则系统将采用默认的布局管理器,这可能得不到预想的结果。修改后的FrameWithButton.java程序如下:程序FrameWithButton.javaimport java.awt.*;import javax.swing.*;public class FrameWithButton public static void main(String args) JFrame frame=new JFrame(Frame With Button); frame.getContentPane().setLayout(new FlowLayout(); JButton btn1 = new JButton(OK); JButton btn2 = new JButton(Cancel); frame.add(btn1); frame.add(btn2); frame.setSize(400,300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); _ 在面板上绘制图形在Java应用程序和Java小应用程序中都可以绘图。虽然可以在框架中使用paint()方法直接绘图,但一般不是把图形绘制在顶层容器中,图形一般绘制在JPanel面板上。JPanel对象除了作为中间容器外,它的另一个主要用途是绘制图形。可以在它的上面绘制字符串和图形甚至显示图像。1 在面板中绘图绘制图形的一般过程是先把图形绘制在中间容器JPanel对象上,然后再将中间容器添加到顶层容器的内容窗格上或将其设置为顶层容器的内容窗格。具体步骤是:先创建一个JPanel类的子类,并且覆盖JPanel类的paintComponent()方法,在覆盖该方法时必须调用超类的paintComponent()方法。paintComponent()方法是在JComponent类中定义的,在组件显示时系统调用该方法绘制组件,它的声明格式如下: public void paintComponent(Graphics g)该方法有一个Graphics类的参数g,该对象一般称为图形上下文(graphics context)或者绘图对象,它是由Java运行系统自动创建的,我们就是使用该对象绘制图形。下面的例子是在应用程序窗口中显示一个字符串。程序DrawStringDemo.javaimport java.awt.*;import javax.swing.*;class MyPanel extends JPanel public void paintComponent(Graphics g) super.paintComponent(g); g.drawString(Welcome to Java painting.,50,100); public class DrawStringDemo extends JFrameMyPanel mp = new MyPanel();public DrawStringDemo()this(No Title);public DrawStringDemo(String title) super(title); Container cp = getContentPane(); cp.add(mp , BorderLayout.CENTER); /setContentPane(mp); setSize(400,240); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(Stringargs)new DrawStringDemo(draw a string);_程序运行结果如图7所示。图 7 在面板中绘制图形2 Graphics类java.awt.Graphics类是一个抽象类,使用它可以在组件上绘制字符串,还可以绘制图形。要得到Graphics类的对象通常有两种方法: 在JPanel中绘图时需要覆盖paintComponent()方法,该方法的参数就是Graphics类的一个对象,如程序11.6所示。 调用组件对象的getGraphics()方法,该方法返回一个Graphics类的一个对象,使用该对象可以在组件上绘图。在面板上绘图经常使用颜色和字体,所以下面讨论Color类和Font类,这两个类都定义在java.awt包中。3 Color类一般情况下显示文字或绘图都使用缺省的颜色,可以通过绘图对象设置和改变颜色,如设置内容窗格的背景颜色。通过Color类的构造方法创建颜色对象,Color类的常用的构造方法有: public Color(ing r, int g, int b) 该构造方法使用指定整型的红、绿、蓝颜色分量值创建颜色对象,r、g、b的取值范围为0到255。 public Color(float r, float g, float b) 该构造方法使用指定浮点型的红、绿、蓝颜色分量值创建颜色对象,r、g、b的取值范围为0.0到1.0。 public Color(int rgb) 该构造方法使用指定的组合的RGB值创建透明的sRGB颜色, rgb值的16-23位为红色分量的值,8-15位为绿色分量的值,0-7位为蓝色分量的值。 例如,下面的语句创建了两个颜色对象c1、c2。 Color c1 = new Color(255, 0, 0); /创建一个表示红色的颜色对象c1 Color c2 = new Color(255) /创建一个表示蓝色的颜色对象c2除了可以用构造方法创建颜色对象外,Color类中还定义了13个颜色常量,如表1所示:表1 Color类的颜色常量常量颜色常量颜色Color.RED红色Color.ORANGE橙色Color.YELLOW黄色Color.GREEN绿色Color.CYAN青色Color.BLUE蓝色Color.MAGENTA紫色Color.BLACK黑色Color.WHITE白色Color.PINK粉红色Color.GRAY灰色Color.LIGHT_GRAY浅灰色Color.DARK_GRAY深灰色对于组件,可以调用其setForeground(Color c) 方法和setBackground(Color c)方法设置组件的前景色和背景色。对于绘图可以调用绘图对象的setColor(Color c)方法设置绘图对象的颜色。这些方法都是使用颜色对象作为参数的。修改程序DrawStringDemo.java中的MyPanel类,在其中的paintComponent()方法中添加下面语句就可以使绘制的字符串为蓝色。Color c = new Color(0,0,255);g.setColor(c);4 Font类在Java GUI程序中很多地方需要使用字体。Font类的实例就包含了有关字体的相关信息。字体的属性包含名字、风格和大小。字体的名字与我们在字处理软件中所用到的字体名是相同的。字体有很多种,字体种类的数目取决于计算机上所安装的字体数量。要使用字体需要创建字体对象。Font类的构造方法如下: public Font(String name, int style, int size)name 为字体名,可以是逻辑字体名或字面名(font face name)。一般有五种逻辑名,分别为Dialog、DialogInput、Monospaced、Serif、SansSerif 。若字体名为null,字体名被设为“Default”。style 为字体风格,它需要使用Font类的常量来指定。如Font.PLAIN表示普通字体、Font.BOLD表示粗体、Font.ITALIC表示斜体、Font.BOLD+Font.ITALIC表示粗斜体等。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论