第八章图形界面设计

一、AWT与Swing

1、AWT与Swing
  • java抽象窗口工作集
  • Swing组件与AWT组件最大的不同是Swing组件在实现时不包含任何本地代码
  • 组件是构成图形用户界面的基本元素。
  • 按钮(JButton)、文本输入框(JTextField)、标签(JLabel)等都是组件
  • 框架(Frame)、面板(Panel)等组件称为容器(Container)

二、容器

1、容器
  • 组件可以分为容器组件和非容器组件
  • 容器组件是指可以包含其他组件的组件,又分为顶层容器和一般用途容器
  • Swing中提供了4种顶层容器,分别为JFrame、JApplet、JDialog和JWindow。
  • 构造方法
    JFrame( ):构造一个初始时不可见、无标题的新框架窗体。
    ·JFrame(String title):创建一个初始时不可见、具有指定标题的新框架窗体。
  • 常用的方法:
    ·void setBounds(intx,inty,intwidth,int height):移动并调整框架大小。左上角位置的横纵坐标分别由x和y指定,框架的宽高分别由width和height指定。
      ·void setSize(intwidth,int height):设置框架的大小,宽度是width,高度是height。
      ·void setBackground(Color bg):使用颜色bg设置框架的背景色。
      ·void setVisible(booleanaFlag):设置框架可见或不可见。
      ·void pack( ):调整框架的大小,以适合其子组件的首选大小和布局。
      ·void setTitle(String title):设置框架的标题为字符串title。
      ·Container getContentPane( ):返回此框架窗体的内容窗格对象。
      ·void setLayout(LayoutManager manager):设置布局管理器。
    JFrame()示例:
public static void main(String[] args) throws FileNotFoundException {

    // 创建一个JFrame实例,带有标题
    JFrame frame = new JFrame("JFrameDemo");

    // 创建一个JButton实例,按钮带文件
    JButton butt = new JButton("点我");

    // 将按钮放到JFrame的中央
    frame.getContentPane().add(butt, BorderLayout.CENTER);

    // 将JFrame设置为适当的大小
    frame.pack();

    // 显示JFrame
    frame.setVisible(true);

    // 退出时关闭窗口
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
2、内容窗口
  • 通过顶层容器的getContentPane()方法获取其默认的内容窗口。
 Container contentPane=frame.getContentPane( );
 contentPane.add(button,BorderLayout.CENTER);
  • 创建一个新的内容窗格
  JPanelcontentPane=new JPanel( );//创建JPanel实例
  contentPane.setLayout(new BorderLayout( ));//创建布局管理器
  contentPane.add(button,BorderLayout CENTER);//添加组件
  frame.setContentPane(contentPane);//添加内容窗格
3、面板
  • 普通面板(JPanel)和滚动面板(JScrollPane)
  • 面板不能独立存在,需添加到其他容器中
  • JPanel常用的构造方法:
    ·JPanel( ):创建具有FlowLayout布局的新面板。
    ·JPanel(LayoutManager layout):创建具有指定布局管理器的新面板。
    在这里插入图片描述
  • JScrollPane是Container类的子类。但是只能添加一个组件
  • 常用构造方法:
    ·JScrollPane( ):创建一个空的JScrollPane,需要时水平和垂直滚动条都可显示。
    ·JScrollPane(Component view):创建一个显示指定组件内容的JScrollPane,只要组件的内容超过视图大小,就会显示水平和垂直滚动条。

三、标签及按钮

1、标签(JLabel)
  • 最简单的Swing组件
  • 通常用于显示提示性的文本信息或图标,不可被编辑
  • 构造方法有以下6种形式:
    ·JLabel( ):创建一个既不显示文本信息又不显示图标的空标签。
     ·JLabel(Icon image):创建一个显示图标的标签。
     ·JLabel(String text):创建一个显示文本信息的标签。
     ·JLabel(Icon image,int horizontal Alignment):创建一个显示图标的标签,水平对齐方式由int型参数horizontalAlignment指定。
     ·JLabel(String text,inthorizontalAlignment):创建一个显示文本信息的标签,水平对齐方式由int型参数horizontalAlignment指定。
     ·JLabel(String text,Iconicon,inthorizontalAlignment):创建一个同时显示文本信息和图标的标签,水平对齐方式由int型参数horizontalAlignment指定。
     构造方法中,表示水平对齐方式的int型参数horizontalAlignment的取值可以为JLabel.LEFT,JLabel.RIGHT和JLabel.CENTER常量,分别表示左对齐、右对齐和居中对齐。
     示例:
//构造一个以右对齐方式显示的标签
 JLabel label=new JLabel(“Hello”,JLabel.RIGHT);
2、按钮
  • 经常用到的按钮有4种形式:JButton、JToggleButton(切换按钮)、JCheckBox(复选按钮)和JRadioButton(单选按钮)
  • JButton最简单的一种
    ·JButton( ):创建一个既没有显示文本又没有图标的按钮。
    ·JButton(Icon icon):创建一个没有显示文本但有图标的按钮。
    ·JButton(String text):创建一个有显示文本但没有图标的按钮。
    ·JButton(String text,Icon icon):创建一个既有显示文本又有图标的按钮。
  • JButton类常用的几种方法:
    JButton类的常用方法有以下几种。
      ·public void setMnemonic(int mnemonic):设置当前按钮的键盘助记符。
      ·public void setText(String text):设置按钮的文本。
      ·public String getText( ):返回按钮的文本。
      ·public void setToolTipText(String text):设置要显示的提示文本。
      ·public void addActionListener(ActionListener l):为按钮添加事件侦听程序

四、布局管理器

1、FlowLayout布局管理器
  • 对容器中组件进行布局的方式是将组件逐个地放置在容器中的一行上,一行放满后就另起一个新行.
  • 三种构造方法
    FlowLayout( ):创建一个默认的FlowLayout布局管理器,居中对齐,默认的水平和垂直间距是5个像素。
    · FlowLayout(int align):创建一个新的FlowLayout布局管理器,对齐方式是指定的,默认的水平和垂直间距是5个像素。
    · FlowLayout(intalign,inthgap,intvgap):创建一个新的FlowLayout布局管理器,具有指定的对齐方式以及指定的水平和垂直间距。
  • FlowLayout.LEFT、FlowLayout.RIGHT和FlowLayout.CENTER三种形式,分别对应组件的左对齐、右对齐和居中对齐方式。
  • 示例:
    在这里插入图片描述
2、BorderLayout布局管理器
  • BorderLayout是顶层容器中内容窗格的默认布局管理器
  • 由BorderLayout管理的容器被划分成5个区域,分别代表容器的上部(North)、下部(South)、左部(West)、右部(East)和中部(Center),分别使用常量BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.EAST和BorderLayout.CENTER来表示。
  • 示例
    在这里插入图片描述
3、GridLayout布局管理器
  • 是一种网格式的布局管理器,它将容器空间划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格。
  • 三种构造方法:
    · GridLayout( ):创建一个只有一行的网格,网格的列数根据实际需要而定。
    · GridLayout(int rows,int cols):创建具有指定行数和列数的网格布局。
    · GridLayout(introws,intcols,inthgap,intvgap):创建具有指定行数和列数,且有指定水平间距和垂直间距的网格布局。
4、CardLayout布局管理器
  • 这是一种卡片式的布局管理器,它将容器中的组件处理为一系列卡片,每一时刻只显示出其中的一张,而容器充当卡片的容器
    示例:
    在这里插入图片描述
5、BoxLayout布局管理器
  • 将容器中的组件按水平方向排成一行或按垂直方向排成一列
  • 常量BoxLayout.X_AXIS或BoxLayout.Y_AXIS,分别表示按水平方向排列或按垂直方向排列。

五、事件处理

1、事件处理模型
  • 用户在程序界面所进行的操作称为用户事件。对事件的响应称为事件处理。
  • 事件侦听程序:为了接收并处理某类用户事件,组件必须注册相应的事件处理程序,这种事件处理程序称为事件侦听程序(Listener,也称为侦听器)
  • 例如,为了处理按钮上的ActionEvent事件,需要定义一个实现ActionListener接口的侦听程序类。对应ActionEvent事件,有ActionListener接口。
 public interface ActionListenr extends EventListener{   
 public void  actionPerformed(ActionEvent e);}

ActionEvent事件处理示例:
在这里插入图片描述

六、绘图基础

  • 坐标原点(0,0)位于整个区域的左上角
  • 使用java.awt包中的Color类来定义和管理颜色
  • 使用全大写或全小写都是允许的,例如,Color.black和Color.BLACK都代表黑色。
  • 字体创建的格式为Font(名称,样式,字号)
  • 显示文字的三种方法:
    -· public void drawChars(char[ ]data,intoffset,intlength,intx,int y):使用此图形上下文的当前字体和颜色显示字符数组data中从offset位置开始、最多length个字符。首字符的基线位于此图形上下文坐标系统的(x,y)处。
    · public void drawString(String aString,intx,int y):在指定位置显示字符串aString。
    · public void drawBytes(byte[ ]data,intoffset,intlength,intx,int y):使用此图形上下文的当前字体和颜色显示由指定的byte数组data中从offset位置开始、最多length个字符。
  • 字形风格:
    Font.PLAIN(正常)、Font.BOLD(粗体)及Font.ITALIC(斜体)
  • Font类中常用的方法如下
      · String getName( ):返回此Font的逻辑名称,即字体名称。
      · intgetSize( ):返回此Font的字号大小,舍入为整数。
      · intgetStyle( ):返回此Font的样式。
      · booleanisBold( ):测试此Font对象的样式是否为BOLD。
      ·booleanisltalic( ):测试此Font对象的样式是否为ITALIC。
      ·booleanisPlain( ):测试此Font对象的样式是否为PLAIN。
  • Graphics类的基本功能
    Graphics类是所有图形处理的基础。Graphics类是所有图形上下文的抽象父类。
    绘图模式主要有两种,分别是正常模式和异或模式
    绘图模式方法如下:
    setPaintMode( ):将此图形上下文的绘图模式设置为正常模式,这是默认模式。
    · setXORMode(Color c):将此图形上下文的绘图模式设置为异或模式,参数c指定了绘制对象时与窗口进行异或操作的颜色。选择异或模式下,如果使用同一颜色绘制两遍,则相当于擦除第一次绘制的图形,也即恢复原来的状态。
  • javax.swing.JComponent的paint(Graphics g)方法中,会调用如下3个方法:
      · paintComponent(Graphics g):绘制组件。
      · paintBorder(Graphics g):绘制组件的边框。
      · paintChildren(Graphics g):绘制组件中的子组件。
    在Graphics中定义了多种绘图方法:
    · drawArc(intx,inty,intwidth,intheight,intstartAngle,int arc Angle):沿着由左上角为(x,y)、宽为width、高为height的外接矩形所限定的椭圆绘制一条弧。弧起始于startAngle,延伸的距离由arcAngle定义。
      · drawLine(int x1,int y1,int x2,int y2):绘制一条从点(x1,y1)到点(x2,y2)的直线。
      · drawOval(intx,inty,intwidth,int height):绘制一个由左上角为(x,y)、宽为width、高为height的外接矩形所限定的椭圆。
      · drawPolygon(int[ ] xPoints,int[ ] yPoints,intnPoints):绘制由x和y坐标数组定义的一系列连接线。每对(x,y)坐标定义了一个点。如果第一个点和最后一个点不同,则图形不是闭合的。
      · drawRect(int x,inty,intwidth,int height):绘制一个矩形,其左上角为(x,y),宽为width,高为height。
      · drawRoundRect(intx,inty,intwidth,intheight,int arc Width,int arc Height):用此图形上下文的当前颜色绘制圆角矩形的边框。矩形的左边和右边分别位于x和x+width。矩形的顶边和底边位于y和y+height。
      · drawString(String str,intx,int y):在点(x,y)处输出字符串str,向右扩展。
      · draw3DRect((intx,inty,intwidth,intheight,boolean raised)):绘制指定矩形的3D突出显示边框。
  • setColor方法可以设置前景色,setBackground方法可以设置背景色。
  • Polygon类中的常用方法如下:
      · Polygon( ):构造方法,创建空的多边形。
      · Polygon(int[ ] xpoints,int[ ] ypoints,intnpoints):构造方法,使用xpoints和ypopints中的相对应的坐标对(x,y)来创建多边形。
      · addPoint(intx,int y):将由参数指定的点加入到多边形中。
      · contains(intx,int y):如果指定的点含在多边形中,则返回真。
      · contains(Point p):如果指定的点含在多边形中,则返回真。
      · getBounds( ):得到多边形的外接矩形。
      · translate(intdeltaX,intdeltaY):将多边形的各顶点沿x轴偏移deltaX,沿y轴偏移deltaY。
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值