第十八章swing程序设计

一、Swing概述
Swing 是 Java 平台的用户界面(UI)工具包,它是一种现代化的、跨平台的 UI 工具包,可以使用各种操作系统上的 Java 虚拟机(JVM)来实现,包括 Windows、Linux 和 MacOS 等。Swing 提供了一套完整的 UI 组件,例如按钮、文本框、标签、表格等可以帮助开发人员快速构建 GUI 应用程序。Swing 采用了 MVC(模型-视图-控制器)的设计模式,使得开发人员可以轻松地将数据模型与用户界面相分离,开发出更加模块化、易于维护、可扩展的应用程序。Swing 还提供了自定义组件的开发能力,使得开发人员可以通过继承 Swing 的基类来创建自己的 GUI 组件。

常用的组件有:

二Swing常用窗体

1、JFrame窗体

例题:

2、JDialog对话框

例题:

3、JOptionPane小型对话框

1,自定义对话框

首先介绍一个自定义的对话框,这个对话框可以说是一块白板,开发者可以自行定义对话框中显示的元素。创建自定义对话框的方法如下:

public static int showOptionDialog(Component parentComponent,
        Object message,
        String title,
        int optionType,
        int messageType,
        lcon icon,
        Object[] options,
        Object initalValue)

例题:

2,确认框

确认框已经封装好了一套外观样式,弹出后要求用户做出选择操作,用户选择具体选项后,确认框可以返回用户的选择结果,结果以int方式返回。创建确认对话框的方法有以下几种重载形式:

调出带有选项yes,no和cancel的对话框:标题为Select an Option:

static int showConfirmDialog(Componenet parentComponent,Object message)

调出一个由optionType参数确定其中选项数的对话框。

static int showConfirmDialog(Component parentComponet,Object message,String title,int optionType)

调出一个由optionType参数确定其中选项数的对话框,messageType参赛确定要显示的图标。

static int showConfirmDialog(Component parentComponent,
        Object message,
        String title,
        int optionType,
        int messageType)

调出一个带有指定图标的对话框,其中的选项数由optionType参数确定。

static int showConfirmDialog(Component parentComponent,
        Object message,
        String title,
        int optionType,
        int messageType,
        lcon icon)

例题:弹出会话框,询问用户是否离开

此时确认框弹出效果,如上所示。如果用户单击“是”按钮,变量answer获得的值为0;如果用户点击“否”按钮,变量answer获得的值为1;如果用户单击“取消”按钮,变量answer获得的值为2。

3,输入框

例题:弹出会话框,让用户输入自己的姓名

4,通知框

通知框是最简单的一个对话框,仅弹出提示,不会返回任何值。创建通知框方法有以下几种重载形式:

例题:弹出警告对话框

三、常用布局管理器
开发Swing程序时,在容器中使用布局管理器能够设置窗体的布局,进而控制 Swing 组件的位置和大小。Swing常用的布局管理器为绝对布局管理器、流布局管理器、边界布局管理器和网格布局管理器。

1、null绝对布局
绝对布局也叫 null 布局,其特点是硬性指定组件在容器中的位置和大小,组件的位置通过绝对坐标的方式来指定。使用绝对布局首先要使用 Container.setLayout(null)方法取消容器的布局管理器,然后再使用Component.setBounds(int x,int y int width,int height)方法设置每个组件在容器中的位置和大小。

例题:使用绝对布局定位按钮位置和大小

2、FlowLayouut流布局管理器

例题:使用流布局排列按钮

3、BorderLayout边界布局管理器

例题:使用边界布局排列按钮

4、GridLayout网络布局管理器

例题:使用网格布局排列按钮

四、常用面板
在Swing程序设计中,面板是一个容器,被用于容纳其他组件,但面板必须被添加到其他到其他容器中。

1、JPanel面板
JPanel面板继承java.awt.Container类。JPanel面板必须在窗体容器中使用,无法脱离窗体显示。

例题:在一个窗体中显示4种布局风格的面板

2、JScrollPane滚动面板
JScrolIPane 面板是带滚动条的面板,被用于在较小的窗体中显示较大篇幅的内容。需要注意的是,JScrollPane 滚动面板不能使用布局管理器,且只能容纳一个组件。如果需要向 JScrollPane 面板中添加多个组件,那么需要先将多个组件添加到 JPanel 面板,再将JPanel面板添加到JScrollPane 滚动面板。

例题:为窗体添加上下滚动条

五、文字标签组件与图标
在Swing 程序设计中,标签(Label)被用于显示文本、图标等内容。在 Swing 应用程序的用户界面中,用户能够通过标签上的文本、图标等内容获得相应的提示信息。本节将对 Swing标签的用法如何剑建标客和如何在标签上显示文本及图标等内容予以讲解。

1、JLabel标签


例题:在窗体中显示文字标签

2、图标的使用


例题:在窗体中演示图标

六、按钮组件
在Swing程序设计中,按钮是较为常见的组件,被用于触发特定的动作。Swing提供了多种按钮组件:按钮、单选按钮、复选框等。

1、JButton按钮


例题:演示不同效果的按钮


2、JRadioButton单选按钮
Swing单选按钮由JRadioButton对象表示。在Swing程序设计中,需要把多个单选按钮添加到按钮组,当用户选中某个单选按钮时,按钮组中的其他单选按钮将不能被同时选中。

例题:性别选择

3、JCheckBox复选框


例题:打印用户的所选内容

七、列表组件
Swing 中提供两种列表组件,分别为下拉列表框 (JComboBox)与列表框 (List)。下拉列表与列表框都是带有一系列列表项的组件,用户可以从中选择需要的列表项。列表框较下拉列表框更直观它将所有的列表项罗列在列表框中。但是,下拉列表框较列表框更为便捷、美观,它将所有的列表项隐藏起来,当用户选用其中的列表项时才会显现出来。本节将详细讲解列表框与下拉列表框的使用。

1、JComboBox下拉列表框


例题:在下拉列表框中显示用户的所选内容

2、JList列表框


例题:在列表框中显示用户的所选内容

八、文本组件
文本组件在开发Swing程序过程中经常被用到,尤其是文本框件和密码框组件。使用文本组件可以很轻松地操作单行文字、多行文字、口令字段等文本内容。

1、JTextField文本框


例题:在文本框中显示默认文字并清除

2、JPasswordField密码框


3、JTextArea文本域

​​​​​​​


例题:在文本域中显示默认文字

九、表格组件
Swing表格由JTable对象表示,其作用是把数据以表格的形式显示给用户。

1、创建表格


例题:创建带滚动条的表格

2、DefaultTableModel表格数据模型


例题:表格自动排序

3、维护表格模型


例题:对表格内容进行增删改查

十、事件监听器
前文中一直在讲解组件,这些组件本身并不带有任何功能。例如,在窗体中定义一个按钮,当用户单击该按钮时,虽然按钮可以凹凸显示,但在窗体中并没有实现任何功能。这时需要为按钮添加特定事件监听器,该监听器负责处理用户单击按钮后实现的功能。

1、ActionEvent动作事件


例题:单击按钮后,修改按钮文本

在本实例中,为按钮设置了动作监听器。由于获取事件监听时需要获取实现ActionListener接口的对象,所以定义了一个内部类 jbAction 实现 ActionListener 接口,同时在该内部类中实现了actionPerformed0方法,也就是在actionPerformed0方法中定义当用户单击该按钮后实现怎样的功能。

2、KeyEvent键盘事件


说明:在KeyEvent类中,以“VK_”开头的静态常量代表各个按键的keyCode,可以通过这些静态常量判断事件中的按键,获得按键的标签。

例题:虚拟键盘

package 第十八章;
 
package 第十八章;
 
import java.awt.BorderLayout;
import java.awt.EventQueue;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import java.awt.Component;
 
import javax.swing.JButton;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.border.TitledBorder;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
 
import javax.swing.JTextField;
 
/**
 * 虚拟键盘(键盘的按下与释放)
 */
public class KeyBoard extends JFrame { // 创建“键盘”类继承JFrame
    // 声明窗体中的成员组件
    private JPanel contentPane;
    private JTextField textField;
    private JButton btnQ;
    private JButton btnW;
    private JButton btnE;
    private JButton btnR;
    private JButton btnT;
    private JButton btnY;
    private JButton btnU;
    private JButton btnI;
    private JButton btnO;
    private JButton btnP;
    private JButton btnA;
    private JButton btnS;
    private JButton btnD;
    private JButton btnF;
    private JButton btnG;
    private JButton btnH;
    private JButton btnJ;
    private JButton btnK;
    private JButton btnL;
    private JButton btnZ;
    private JButton btnX;
    private JButton btnC;
    private JButton btnV;
    private JButton btnB;
    private JButton btnN;
    private JButton btnM;
    Color green = Color.GREEN;// 定义Color对象,用来表示按下键的颜色
    Color white = Color.WHITE;// 定义Color对象,用来表示释放键的颜色
 
    ArrayList<JButton> btns = new ArrayList<JButton>();// 定义一个集合,用来存储所有的按键ID
    // 自定义一个方法,用来将容器中的所有JButton组件添加到集合中
 
    private void addButtons() {
        for (Component cmp : contentPane.getComponents()) {// 遍历面板中的所有组件
            if (cmp instanceof JButton) {// 判断组件的类型是否为JButton类型
                btns.add((JButton) cmp);// 将JButton组件添加到集合中
            }
        }
    }
 
    /**
     * 主方法
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() { // 使得Runnable中的的run()方法在the system EventQueue的指派线程中被调用
            public void run() {
                try {
                    KeyBoard frame = new KeyBoard(); // 创建KeyBoard对象
                    frame.setVisible(true); // 使frame可视
                    frame.addButtons();// 初始化存储所有按键的集合
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
 
    /**
     * 创建JFrame窗体
     */
    public KeyBoard() { // KeyBoard的构造方法
        setTitle("\u865A\u62DF\u952E\u76D8\uFF08\u6A21\u62DF\u952E\u76D8\u7684\u6309\u4E0B\u4E0E\u91CA\u653E\uFF09"); // 设置窗体题目
        setResizable(false); // 不可改变窗体宽高
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭的方式
        setBounds(100, 100, 560, 280); // 设置窗体的位置和宽高
        /**
         * 创建JPanel面板contentPane置于JFrame窗体中,并设置面板的背景色、边距和布局
         */
        contentPane = new JPanel();
        contentPane.setBackground(Color.WHITE);
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        /**
         * 创建按钮button置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
         */
        btnQ = new JButton("Q");
        btnQ.setBackground(white);
        btnQ.setVerticalAlignment(SwingConstants.TOP);
        btnQ.setHorizontalAlignment(SwingConstants.LEADING);
        btnQ.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnQ.setBounds(0, 60, 47, 45);
        contentPane.add(btnQ);
        /**
         * 创建按钮button_2置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
         */
        btnW = new JButton("W");
        btnW.setBackground(white);
        btnW.setVerticalAlignment(SwingConstants.TOP);
        btnW.setHorizontalAlignment(SwingConstants.LEADING);
        btnW.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnW.setBounds(55, 60, 49, 45);
        contentPane.add(btnW);
        /**
         * 创建按钮button_3置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
         */
        btnE = new JButton("E");
        btnE.setBackground(white);
        btnE.setVerticalAlignment(SwingConstants.TOP);
        btnE.setHorizontalAlignment(SwingConstants.LEADING);
        btnE.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnE.setBounds(110, 60, 45, 45);
        contentPane.add(btnE);
        /**
         * 创建按钮button_4置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
         */
        btnR = new JButton("R");
        btnR.setBackground(white);
        btnR.setVerticalAlignment(SwingConstants.TOP);
        btnR.setHorizontalAlignment(SwingConstants.LEADING);
        btnR.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnR.setBounds(165, 60, 45, 45);
        contentPane.add(btnR);
        /**
         * 创建按钮button_5置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
         */
        btnF = new JButton("F");
        btnF.setBackground(white);
        btnF.setVerticalAlignment(SwingConstants.TOP);
        btnF.setHorizontalAlignment(SwingConstants.LEADING);
        btnF.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnF.setBounds(195, 125, 45, 45);
        contentPane.add(btnF);
        /**
         * 创建按钮button_6置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
         */
        btnD = new JButton("D");
        btnD.setBackground(white);
        btnD.setVerticalAlignment(SwingConstants.TOP);
        btnD.setHorizontalAlignment(SwingConstants.LEADING);
        btnD.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnD.setBounds(137, 125, 45, 45);
        contentPane.add(btnD);
 
        btnT = new JButton("T");
        btnT.setVerticalAlignment(SwingConstants.TOP);
        btnT.setHorizontalAlignment(SwingConstants.LEADING);
        btnT.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnT.setBackground(white);
        btnT.setBounds(220, 60, 45, 45);
        contentPane.add(btnT);
 
        btnY = new JButton("Y");
        btnY.setVerticalAlignment(SwingConstants.TOP);
        btnY.setHorizontalAlignment(SwingConstants.LEADING);
        btnY.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnY.setBackground(white);
        btnY.setBounds(275, 60, 45, 45);
        contentPane.add(btnY);
 
        btnU = new JButton("U");
        btnU.setVerticalAlignment(SwingConstants.TOP);
        btnU.setHorizontalAlignment(SwingConstants.LEADING);
        btnU.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnU.setBackground(white);
        btnU.setBounds(330, 60, 45, 45);
        contentPane.add(btnU);
 
        btnI = new JButton("I");
        btnI.setVerticalAlignment(SwingConstants.TOP);
        btnI.setHorizontalAlignment(SwingConstants.LEADING);
        btnI.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnI.setBackground(white);
        btnI.setBounds(385, 60, 45, 45);
        contentPane.add(btnI);
 
        btnO = new JButton("O");
        btnO.setVerticalAlignment(SwingConstants.TOP);
        btnO.setHorizontalAlignment(SwingConstants.LEADING);
        btnO.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnO.setBackground(white);
        btnO.setBounds(440, 60, 46, 45);
        contentPane.add(btnO);
 
        btnP = new JButton("P");
        btnP.setVerticalAlignment(SwingConstants.TOP);
        btnP.setHorizontalAlignment(SwingConstants.LEADING);
        btnP.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnP.setBackground(white);
        btnP.setBounds(495, 60, 45, 45);
        contentPane.add(btnP);
 
        btnA = new JButton("A");
        btnA.setVerticalAlignment(SwingConstants.TOP);
        btnA.setHorizontalAlignment(SwingConstants.LEADING);
        btnA.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnA.setBackground(white);
        btnA.setBounds(23, 125, 45, 45);
        contentPane.add(btnA);
 
        btnS = new JButton("S");
        btnS.setVerticalAlignment(SwingConstants.TOP);
        btnS.setHorizontalAlignment(SwingConstants.LEADING);
        btnS.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnS.setBackground(white);
        btnS.setBounds(82, 125, 45, 45);
        contentPane.add(btnS);
 
        btnG = new JButton("G");
        btnG.setVerticalAlignment(SwingConstants.TOP);
        btnG.setHorizontalAlignment(SwingConstants.LEADING);
        btnG.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnG.setBackground(white);
        btnG.setBounds(251, 125, 45, 45);
        contentPane.add(btnG);
 
        btnH = new JButton("H");
        btnH.setVerticalAlignment(SwingConstants.TOP);
        btnH.setHorizontalAlignment(SwingConstants.LEADING);
        btnH.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnH.setBackground(white);
        btnH.setBounds(306, 125, 45, 45);
        contentPane.add(btnH);
 
        btnJ = new JButton("J");
        btnJ.setVerticalAlignment(SwingConstants.TOP);
        btnJ.setHorizontalAlignment(SwingConstants.LEADING);
        btnJ.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnJ.setBackground(white);
        btnJ.setBounds(361, 125, 45, 45);
        contentPane.add(btnJ);
 
        btnK = new JButton("K");
        btnK.setVerticalAlignment(SwingConstants.TOP);
        btnK.setHorizontalAlignment(SwingConstants.LEADING);
        btnK.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnK.setBackground(white);
        btnK.setBounds(416, 125, 47, 45);
        contentPane.add(btnK);
 
        btnL = new JButton("L");
        btnL.setVerticalAlignment(SwingConstants.TOP);
        btnL.setHorizontalAlignment(SwingConstants.LEADING);
        btnL.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnL.setBackground(white);
        btnL.setBounds(471, 125, 45, 45);
        contentPane.add(btnL);
 
        btnZ = new JButton("Z");
        btnZ.setVerticalAlignment(SwingConstants.TOP);
        btnZ.setHorizontalAlignment(SwingConstants.LEADING);
        btnZ.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnZ.setBackground(white);
        btnZ.setBounds(39, 190, 45, 45);
        contentPane.add(btnZ);
 
        btnX = new JButton("X");
        btnX.setVerticalAlignment(SwingConstants.TOP);
        btnX.setHorizontalAlignment(SwingConstants.LEADING);
        btnX.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnX.setBackground(white);
        btnX.setBounds(107, 190, 45, 45);
        contentPane.add(btnX);
 
        btnC = new JButton("C");
        btnC.setVerticalAlignment(SwingConstants.TOP);
        btnC.setHorizontalAlignment(SwingConstants.LEADING);
        btnC.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnC.setBackground(white);
        btnC.setBounds(178, 190, 45, 45);
        contentPane.add(btnC);
 
        btnV = new JButton("V");
        btnV.setVerticalAlignment(SwingConstants.TOP);
        btnV.setHorizontalAlignment(SwingConstants.LEADING);
        btnV.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnV.setBackground(white);
        btnV.setBounds(250, 190, 45, 45);
        contentPane.add(btnV);
 
        btnB = new JButton("B");
        btnB.setVerticalAlignment(SwingConstants.TOP);
        btnB.setHorizontalAlignment(SwingConstants.LEADING);
        btnB.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnB.setBackground(white);
        btnB.setBounds(315, 190, 45, 45);
        contentPane.add(btnB);
 
        btnN = new JButton("N");
        btnN.setVerticalAlignment(SwingConstants.TOP);
        btnN.setHorizontalAlignment(SwingConstants.LEADING);
        btnN.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnN.setBackground(white);
        btnN.setBounds(382, 190, 47, 45);
        contentPane.add(btnN);
 
        btnM = new JButton("M");
        btnM.setVerticalAlignment(SwingConstants.TOP);
        btnM.setHorizontalAlignment(SwingConstants.LEADING);
        btnM.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        btnM.setBackground(white);
        btnM.setBounds(449, 190, 48, 45);
        contentPane.add(btnM);
        /**
         * 创建面板panel置于面板contentPane中,设置面板panel的位置、宽高、TitledBorder、背景色以及布局方式(边界布局)
         */
        JPanel panel = new JPanel();
        panel.setBorder(new TitledBorder(null, "文本显示区", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel.setBackground(Color.WHITE);
        panel.setBounds(0, 0, 540, 45);
        contentPane.add(panel);
        panel.setLayout(new BorderLayout(0, 0));
 
        /**
         * 创建文本框textField置于面板panel的中间
         */
        textField = new JTextField();
        textField.addKeyListener(new KeyAdapter() { // 文本框添加键盘事件的监听
            char word;
 
            @Override
            public void keyPressed(KeyEvent e) { // 按键被按下时被触发
                word = e.getKeyChar();// 获取按下键表示的字符
                for (int i = 0; i < btns.size(); i++) {// 遍历存储按键ID的ArrayList集合
                    // 判断按键是否与遍历到的按键的文本相同
                    if (String.valueOf(word).equalsIgnoreCase(btns.get(i).getText())) {
                        btns.get(i).setBackground(green);// 将指定按键颜色设置为绿色
                    }
                }
            }
 
            @Override
            public void keyReleased(KeyEvent e) { // 按键被释放时被触发
                word = e.getKeyChar();// 获取释放键表示的字符
                for (int i = 0; i < btns.size(); i++) {// 遍历存储按键ID的ArrayList集合
                    // 判断按键是否与遍历到的按键的文本相同
                    if (String.valueOf(word).equalsIgnoreCase(btns.get(i).getText())) {
                        btns.get(i).setBackground(white);// 将指定按键颜色设置为白色
                    }
                }
            }
        });
        panel.add(textField, BorderLayout.CENTER);
        textField.setColumns(10);
    }
}

3、MouseEvent鼠标事件


例题:捕捉鼠标在窗体中的行为

​​​​​​​

运行结果如上上图所示,首先将光标移入窗体,然后单击鼠标左键,接着双击鼠标左键,最后将光标移除窗体,在控制台将得到最后一张图的信息。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于java的雷电游戏GUL_swing软件设计源码+WORD毕业论文文档. 基于java的雷电游戏基本功能包括:敌方飞机随机飞行、我方飞机手动控制飞行,射击比拼,游戏闯关等。本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证。 若初始化成功后,界面会自动进行跳转,跳转到游戏开始界面。 有开始、暂停、恢复游戏等选项。 (2)雷电游戏难度的升级: 当进入游戏后,随着时间越来越长,游戏难度会越来越大。 界面敌机增多,对飞机造成伤害的子弹增多,游戏难度增加。 最后会遇到一个血条较长的怪兽,攻击其至血条为0时,自动过关跳转到下一关卡。 (3)玩家对飞机的控制功能: 玩家可以对飞机进行操控,通过前后左右键来控制飞机的飞行路线。 (4)游戏界面绘画功能。 目 录 摘 要 I Abstract II 1 引言 3 1.1 项目背景 3 1.2 电脑游戏的发展历史 3 1.3国内游戏项目研究现状 5 1.4项目主要工作 6 1.5本文组织结构 7 1.6 电脑游戏的策划 7 2 开发平台与开发技术 8 2.1 Eclipse 8 2.2 Eclipse平台 8 2.3 Java 9 2.4游戏图形界面的开发基础 11 2.5Java游戏的基本框架 14 3 雷电游戏模块设计 16 3.1 用户需求分析 16 3.2 可行性分析 16 3.3 总体设计原则 17 3.4 功能模块设计 18 3.4.1 游戏状态控制功能 18 3.4.2 游戏难度的调整 18 3.4.3 游戏界面绘画功能 18 3.4.4 玩家游戏控制功能 19 3.5 关键技术 19 4 雷电功能实现 20 4.1 游戏程序设计的思路 20 4.1.1 游戏的素材选择 20 4.1.2 游戏子弹、飞机的实现 20 4.1.3 多线程应用的途径 20 4.2 游戏首页的实现 22 4.2.1 界面实现 22 4.2.2 流程图 22 4.2.3 核心代码 23 4.3 游戏开始模块的实现 24 4.3.1 界面实现 24 4.3.2 流程图 25 4.3.3 核心代码 26 4.4 发射子弹模块的实现 27 4.4.1 界面实现 27 4.4.2 流程图 28 4.4.3 核心代码 28 5 系统测试 31 5.1 测试的定义及其重要性 31 5.1.1 测试的定义 31 5.1.2 测试的重要性 31 5.2 测试实例的研究与选择 32 5.3 测试结果 35 总结和展望 37 参考文献 38 致 谢 39 附 录 39 1 引言 1.1 项目背景 作为90后的我们,在小时候都拥有属于自己的一台游戏机,里面形形色色大概有十来款游戏。像 “扫雷”、“推箱子”、“俄罗斯方块”等等,我们的童年有这些游戏陪伴我们是幸福的,令许多小伙伴都为之痴迷,即使现在,这些都是随处可见的休闲游戏。我之选择“雷电”游戏作为我的毕业设计,因为它可以代表一代人青春的回忆。 Java语言,实际上就是面向对象的编程语言。对于计算机编程者来说,使用Java最大的好处有两方面,一是就编写程序而言,非常的简单也容易使用,二是它的功能很强大。与此同时,面向对象理论得以很好的实现。“雷电”游戏的毕业设计使我对本科期间所学知识进行了巩固。 目前常见的电脑游戏的类型有动作游戏、传统益智游戏、体育游戏、策略游戏、休闲游戏和角色扮演类游戏等。不同的类型的游戏有着自身的特点,每一种类型的游戏都有一定的支持人群。开发出一款良好的游戏,了解各种类型的基本特点是很有必要的。而“雷电”游戏就属于上述类型的STG(射击类)游戏,STG(Shooting Game)类型游戏主要凭借远程武器与敌方开展模拟对抗,拥有绚丽的射击画面。 这个项目使我第一次全流程地独立完成整条链路的开发,对于我自己而言,是0-1的突破。万事开头难,有了这次完整项目开发的经历,以后再做游戏或者其它项目时就对全局有所把控,能够做到游刃有余。假如自己没有亲自动手设计这些,哪怕一次,就不能够真正的领会一个完整项目体系的每个元素。在以后做一些大的项目时,就更不能对整体进行宏观思考,也就不能对具体项目每一个细分的小模块进行合适的时间估计,导致项目开发超过预期时间,更有甚,不能完成。 1.2 电脑游戏的发展历史 在1960年,电子计算机进入了美国的大学校园,这时候电脑游戏开始出现。在那个环境当孕育了一大批的电脑编程高手。其具有代表性的是1962年一名叫做拉塞尔的大学生,在美国DEC公司生产的PDP-1型计算机上编写的《宇宙战争》引起了广泛的关注。所以大多数人都把拉塞尔称作电脑游戏
本书是Java语言的经典教材,多年来畅销不衰。本书全面整合了Java 8的特性,采用“基础优先,问题驱动”的教学方式,循序渐进地介绍了程序设计基础、解决问题的方法、面向对象程序设计、图形用户界面设计、异常处理、I/O和递归等内容。此外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、多线程、网络、国际化、高级GUI等内容。 本书文版由《Java语言程序设计 基础篇》和《Java语言程序设计 进阶篇》组成。基础篇对应原书的第1~18章,进阶篇对应原书的第19~33章。为满足对Web设计有浓厚兴趣的同学,本版在配套网站上增加了第34~42章的内容,以提供更多的相关信息。 本书特点 基础篇介绍基础内容,进阶篇介绍高级内容,便于教师按需选择理想的教材。 全面整合了Java 8的特性,对全书的内容进行了修订和更新,以反映Java程序设计的全新技术发展。 对面向对象程序设计进行了深入论述,包含GUI程序设计的基础和扩展。 提供的大量示例都包括了对问题求解的详细步骤,很多示例都是随着Java技术的引入不断地进行增强,这种循序渐进的讲解方式更易于学生学习。 用JavaFX取代了Swing,极大地简化了GUI编程,比Swing更易于学习。 更多有趣示例和练习,激发学生兴趣。在配套网站上还为教师提供了100多道的编程练习题。 作者简介
目录 引言 ...................................................................................................................................... I 第一章程序和程序设计 .......................................................................................................1 §1.1 什么是程序 ?............................................................................................................1 1.1.1 算法.................................................................................................................2 1.1.2 实体.................................................................................................................3 1.1.3 程序.................................................................................................................3 1.1.4 程序设计 .........................................................................................................4 §1.2 程序设计方法与语言 ..............................................................................................5 1.2.1 早期的程序设计 .............................................................................................5 1.2.2 结构化程序设计 .............................................................................................5 1.2.3 面向对象程序设计 .........................................................................................6 §1.3 一个完整的 Java程序.............................................................................................6 1.3.1 Java程序的结构 ..............................................................................................8 1.3.2 Java程序的退化结构 ......................................................................................9 1.3.3 Java程序的运行 ............................................................................................10 1.3.4 Java程序的调试 ............................................................................................11 §1.4 面向对象程序的构造 ............................................................................................11 内容小结.........................................................................................................................12 思考与练习.....................................................................................................................12 上机实习题.....................................................................................................................12 小课题:抽象与抽象层次.............................................................................................13 小课题:程序设计语言的历史.....................................................................................13 第二章基本数据类型 .........................................................................................................14 §2.1 数据类型概述 ........................................................................................................14 2.1.1 什么是类型? ...............................................................................................14 2.1.2 类型的作用 ...................................................................................................14 2.1.3 Java语言的类型 ............................................................................................15 §2.2 程序的单词 ........................................................................................................15 2.2.1 单词分类 .......................................................................................................15 2.2.2 保留字...........................................................................................................15 2.2.3 标识符...........................................................................................................16 2.2.4 程序的空白 ...............................................................................................16 §2.3 变量与赋值 ............................................................................................................17 2.3.1 确定数据类型 ...............................................................................................17 2.3.2 变量的要素 ...................................................................................................17 2.3.3 赋值运算 .......................................................................................................18 2.3.4 程序的出 ...................................................................................................18 §2.4 Java语言的简单类型 .............................................................................................18 2.4.1 字符类型 .......................................................................................................19 2.4.2 整数类型 .......................................................................................................19 2.4.3 浮点数类型和双精度浮点数类型 ...............................................................20 2.4.4 布尔类型 .......................................................................................................20 2.4.5 字符串类型 ...................................................................................................21 2.4.6 符号常量 .......................................................................................................21 §2.5 表达式....................................................................................................................22 - i - 2.5.1 表达式...........................................................................................................22 2.5.2 算术运算 .......................................................................................................22 2.5.3 关系运算 .......................................................................................................23 2.5.4 逻辑运算 .......................................................................................................23 2.5.5 类型转换 .......................................................................................................24 2.5.6 一个小小应用程序 .......................................................................................24 §2.6 编写简单应用程序 ................................................................................................25 2.6.1 最简单的程序 ...............................................................................................25 2.6.2 引入变量的程序 ...........................................................................................26 2.6.3 程序的输入 ...................................................................................................26 2.6.4 完整的程序 ...................................................................................................27 内容小结.........................................................................................................................28 思考与练习.....................................................................................................................28 上机实习题.....................................................................................................................29 小课题:构造性思维方法.............................................................................................29 第三章基本控制结构 .........................................................................................................30 §3.1 简单语句 ................................................................................................................30 §3.2 结构化控制结构 ....................................................................................................30 3.2.1 程序的控制结构 ...........................................................................................30 3.2.2 结构化程序设计工具 ...................................................................................31 3.2.3 盒图与伪码 ...................................................................................................31 §3.3 选择结构 ..............................................................................................................33 3.3.1 不带 else的 if语句 ......................................................................................33 3.3.2 带 else的 if语句 ..........................................................................................35 3.3.3 嵌套 if语句 ..................................................................................................36 3.3.4 垂悬 else问题 ..............................................................................................38 §3.4 循环结构 ..............................................................................................................39 3.4.1 while语句......................................................................................................39 3.4.2 break语句和 continue语句 ..........................................................................42 3.4.3 do_while语句................................................................................................44 3.4.4 for语句..........................................................................................................46 §3.5 原始算法与精美算法 ............................................................................................47 3.5.1 求解问题的精美算法 ...................................................................................47 3.5.2 求解问题的原始算法 ...................................................................................48 §3.6 一个应用程序例子 ................................................................................................48 内容小结.........................................................................................................................50 思考与练习.....................................................................................................................51 上机实习题.....................................................................................................................52 第四章方法.........................................................................................................................53 §4.1 例程机制 ................................................................................................................53 4.1.1 分而治之与软件重用 ...................................................................................53 4.1.2 Java语言的方法 ............................................................................................54 4.1.3 两个例子 .......................................................................................................54 §4.2 方法的声明与调用 ................................................................................................56 4.2.1 方法的声明 ...................................................................................................56 4.2.2 方法的调用 ...................................................................................................57 4.2.3 方法的接口与实现 .......................................................................................58 §4.3 方法的参数 ............................................................................................................59 4.3.1 参数设计 .......................................................................................................59 4.3.2 按值调用 .......................................................................................................61 §4.4 标识符的作用域 ....................................................................................................61 - ii - 4.4.1 作用域规则 ...................................................................................................62 4.4.2 标识符命名冲突 ...........................................................................................63 §4.5 使用 Java API ........................................................................................................63 4.5.1 数值运算 .......................................................................................................63 4.5.2 伪随机数 .......................................................................................................64 §4.6 递归程序设计 ........................................................................................................65 4.6.1 简单递归程序 ...............................................................................................65 4.6.2 梵塔问题 .......................................................................................................66 内容小结.........................................................................................................................67 思考与练习.....................................................................................................................68 上机实习题.....................................................................................................................69 小课题:计算机辅助教学.............................................................................................69 第五章类与对象 .................................................................................................................70 §5.1 声明一个类 ............................................................................................................70 5.1.1 类的声明 .......................................................................................................70 5.1.2 类成员的访问控制 .......................................................................................71 5.1.3 类作用域 .......................................................................................................72 §5.2 创建对象实例 ........................................................................................................73 5.2.1 对象的声明与使用 .......................................................................................73 5.2.2 对象的初始化 ...............................................................................................74 5.2.3 静态成员 .......................................................................................................76 5.2.4 对象的参数传递方式 ...................................................................................78 §5.3 变量和对象实例的生存期 ....................................................................................79 5.3.1变量的生存期 ................................................................................................80 5.3.2对象实例的生存期 ........................................................................................80 §5.4 字符串类 String.....................................................................................................82 5.4.1 使用 String类型的对象 ...............................................................................82 5.4.2 类 String的主要方法 ...................................................................................82 5.4.3 使用字符串对象的例子 ...............................................................................84 §5.5 关于类和对象的进一步讨论 ................................................................................86 5.5.1 基本数据类型的包装类 ...............................................................................86 5.5.2 抽象数据类型 ...............................................................................................87 5.5.3 设计良好的类接口 .......................................................................................88 5.5.4 再论对象 .......................................................................................................88 5.5.5 再论 Java语言的类......................................................................................89 内容小结.........................................................................................................................90 思考与练习.....................................................................................................................90 上机练习题.....................................................................................................................92 小课题:命令行交互方式.............................................................................................92 第六章复合数据类型 .........................................................................................................93 §6.1 使用数组变量 ........................................................................................................93 6.1.1 数组变量的声明 ...........................................................................................93 6.1.2 访问数组元素 ...............................................................................................94 6.1.3 数组作为参数传递 .......................................................................................95 §6.2 数组应用举例 ........................................................................................................96 6.2.1 学生成绩管理 ...............................................................................................96 6.2.2 完整的程序 ...................................................................................................96 6.2.3 冒泡排序法 ...................................................................................................99 §6.3 使用二维数组变量 ..............................................................................................100 6.3.1 什么是二维数组? .....................................................................................100 6.3.2 使用二维数组 .............................................................................................101 - iii - 6.3.3 二维数组应用举例 .....................................................................................101 §6.4 一个扑克牌游戏程序 ..........................................................................................102 6.4.1 分析问题 .....................................................................................................102 6.4.2 建模.............................................................................................................103 6.4.3 完整的程序 .................................................................................................103 §6.5 高级数据结构的构造 ..........................................................................................106 §6.6 对象实例的复制与比较 ......................................................................................108 6.6.1 对象实例的复制 .........................................................................................108 6.6.2 对象实例的比较 .........................................................................................112 内容小结.......................................................................................................................113 思考与练习...................................................................................................................113 上机实习题...................................................................................................................115 第七章继承与多态 ...........................................................................................................116 §7.1 继承的基本概念 ..................................................................................................116 7.1.1 IS-A关系..................................................................................................116 7.1.2 继承机制 .....................................................................................................116 7.1.3 继承的作用 .................................................................................................117 7.1.4 继承与软件重用 .........................................................................................118 §7.2 Java语言的继承机制 ...........................................................................................118 7.2.1 继承的语法 .................................................................................................118 7.2.2 继承与成员访问控制 .................................................................................120 7.2.3 继承成员的调整 .........................................................................................121 7.2.4 子类对象实例的存储组织 .........................................................................122 7.2.5 继承与对象初始化及收尾 .........................................................................124 7.2.6 继承与子类型 .............................................................................................125 §7.3 多态性的基本概念 ..............................................................................................126 7.3.1 程序的多态性 .............................................................................................126 7.3.2 表示独立性 .................................................................................................127 §7.4 方法重载 ..............................................................................................................127 7.4.1 方法重载的途径 .........................................................................................128 7.4.2 方法重载的二义性 .....................................................................................130 7.4.3 构造方法的重载 .........................................................................................133 §7.5 动态绑定 ..............................................................................................................133 §7.6 对继承和多态的进一步讨论 ..............................................................................135 7.6.1 单继承与多继承 .........................................................................................135 7.6.2 最终类与抽象类 .........................................................................................136 7.6.3 类属机制 .....................................................................................................139 7.6.4 类层次设计 .................................................................................................140 内容小结.......................................................................................................................141 思考与练习...................................................................................................................142 上机实习题...................................................................................................................146 小课题:为 Java语言引入类属机制 ..........................................................................147 第八章接口与程序包 .......................................................................................................148 §8.1 接口......................................................................................................................148 8.1.1 接口的作用 .................................................................................................148 8.1.2 接口的声明 .................................................................................................149 8.1.3 接口与类 .....................................................................................................150 8.1.4 接口的继承 .................................................................................................154 8.1.5 接口与多态性 .............................................................................................155 §8.2 程序包..................................................................................................................157 8.2.1 Java程序的组织 ..........................................................................................157 - iv - 8.2.2 程序包的定义 .............................................................................................158 8.2.3 程序包的引入 .............................................................................................159 8.2.4 包级访问控制 .............................................................................................161 8.2.5 Java的系统程序包 ......................................................................................163 §8.3 嵌套类..................................................................................................................164 8.3.1 嵌套类的种类 .............................................................................................164 8.3.2 内部类.........................................................................................................165 8.3.3 回调机制 .....................................................................................................168 8.3.4 静态类.........................................................................................................171 内容小结.......................................................................................................................171 思考与练习...................................................................................................................172 上机实习题...................................................................................................................177 第九章异常处理与断言 ...................................................................................................178 §9.1 异常处理的基本概念 ..........................................................................................178 9.1.1 异常处理 .....................................................................................................178 9.1.2 异常处理的模式 .........................................................................................179 §9.2 Java语言的异常处理机制 ...................................................................................180 9.2.1 异常的分类 .................................................................................................180 9.2.2 Java标准异常简介 ......................................................................................181 9.2.3 异常的捕获与处理 .....................................................................................182 9.2.4 异常的匹配 .................................................................................................184 9.2.5 异常处理与收尾 .........................................................................................184 9.2.6 异常处理与构造方法 .................................................................................186 9.2.7 异常的转发 .................................................................................................187 9.2.8 异常声明与方法重载 .................................................................................188 9.2.9 异常处理与继承机制 .................................................................................188 §9.3 程序断言机制 ......................................................................................................191 9.3.1 程序断言 .....................................................................................................191 9.3.2 程序断言的用法 .........................................................................................192 9.3.3 在 Java语言实现部分断言....................................................................193 内容小结.......................................................................................................................195 思考与练习...................................................................................................................195 上机实习题...................................................................................................................197 第十章输入出流 .......................................................................................................198 §10.1输入出基本概念 ........................................................................................198 10.1.1 外部设备与文件 .......................................................................................198 10.1.2 文件的基本概念 .......................................................................................198 10.1.3 输入出流 ...........................................................................................199 §10.2 Java流系统概述 .................................................................................................199 10.2.1 面向字节的输入流类 ...............................................................................200 10.2.2 面向字节的出流类 ...............................................................................201 10.2.3 面向字符的输入流类 ...............................................................................203 10.2.4 面向字符的出流类 ...............................................................................204 10.2.5 Java API定义的流对象 ............................................................................205 §10.3文件流................................................................................................................206 10.3.1 文件及文件目录的操作 ...........................................................................206 10.3.2 文件内容的顺序读写 ...............................................................................208 10.3.3 文件内容的随机读写 ...............................................................................209 §10.4过滤器流 ............................................................................................................210 10.4.1 装饰模式 ...................................................................................................210 10.4.2 数据转换流 ...............................................................................................211 - v - 10.4.3 带行号的输入流 .......................................................................................212 10.4.4 设计自己的过滤器流 ...............................................................................213 §10.5对象串行化 ........................................................................................................215 10.5.1 对象串行化的作用 ...................................................................................215 10.5.2 对象串行化的基本方法 ...........................................................................216 10.5.3 串行化自己的对象 ...................................................................................217 §10.6其它类型的流简介 ............................................................................................219 10.6.1 管道流 .......................................................................................................219 10.6.2 连接流 .......................................................................................................220 内容小结.......................................................................................................................221 思考与练习...................................................................................................................222 上机实习题...................................................................................................................222 小课题:设计词法分析程序.......................................................................................223 第十一章对象容器...........................................................................................................224 §11.1 对象容器的基本概念 ........................................................................................224 §11.2 Java对象容器概述 .............................................................................................225 11.2.1 Java对象容器接口及其骨架类 ................................................................225 11.2.2 Java的对象容器类 ....................................................................................226 11.2.3支持对象容器的辅助工具 ........................................................................228 §11.3 迭代器................................................................................................................229 11.3.1迭代器设计模式 ........................................................................................229 11.3.2迭代器的基本用法 ....................................................................................230 11.3.3列表专用迭代器 ........................................................................................230 11.3.4旧版本的枚举接口 ....................................................................................232 §11.4 类集容器 ............................................................................................................232 11.4.1类集容器接口 ............................................................................................232 11.4.2列表容器 ....................................................................................................235 11.4.3集合容器 ....................................................................................................238 §11.5 映射容器 ............................................................................................................240 11.5.1映射容器接口 ............................................................................................240 11.5.2映射容器类 ................................................................................................245 §11.6 对象容器操纵工具 ............................................................................................247 11.6.1数组操纵工具 ...........................................................................................247 11.6.2容器操纵工具 ...........................................................................................249 内容小结.......................................................................................................................251 思考与练习...................................................................................................................252 上机实习题...................................................................................................................253 小课题:对象容器的性能比较...................................................................................253 第十二章图形用户界面...................................................................................................255 §12.1用户界面设计概述 ............................................................................................255 12.1.1 用户界面设计原则 ...................................................................................255 12.1.2 用户界面设计内容 ...................................................................................256 §12.2 Java程序的用户界面设计 .................................................................................257 12.2.1 Java程序的用户界面 ................................................................................257 12.2.2 GUI系统的组成........................................................................................257 12.2.3 AWT和 Swing组件 ..................................................................................258 §12.3 Swing概述 .........................................................................................................258 12.3.1 Swing组件 ................................................................................................258 12.3.2 Swing的 M-UI设计模式 .........................................................................259 12.3.3 Swing的事件处理模式.............................................................................260 12.3.4 一个简单的 GUI程序..............................................................................262 - vi - 12.3.5 类 JComponent简介.................................................................................265 §12.4 Swing顶层容器 .................................................................................................268 12.4.1 画框的使用 ...............................................................................................268 12.4.2 对话框的使用 ...........................................................................................269 §12.5 Swing间容器 .................................................................................................272 12.5.1 分隔窗格的使用 .......................................................................................272 12.5.2 滚动窗格的使用 .......................................................................................273 12.5.3 带标签窗格的使用 ...................................................................................278 12.5.4 工具条的使用 ...........................................................................................280 §12.6 Swing原子控件 .................................................................................................281 12.6.1 标签的使用 ...............................................................................................281 12.6.2 按钮的使用 ...............................................................................................283 12.6.3 检查框的使用 ...........................................................................................286 12.6.4 广播按钮的使用 .......................................................................................289 12.6.5 组合框的使用 ...........................................................................................290 12.6.6 列表的使用 ...............................................................................................294 12.6.7 文本控件的使用 .......................................................................................300 12.6.8 表格的使用 ...............................................................................................307 12.6.9 菜单的使用 ...............................................................................................311 §12.7 Swing的布局管理 .............................................................................................316 12.7.1 布局管理器概述 .......................................................................................316 12.7.2 顺序布局管理器 .......................................................................................317 12.7.3 边界布局管理器 .......................................................................................318 12.7.4 网格布局管理器 .......................................................................................318 12.7.5 网格包布局管理器 ...................................................................................319 12.7.6 盒式布局管理器 .......................................................................................321 12.7.7 卡片布局管理器 .......................................................................................322 12.7.8 组件的绝对定位 .......................................................................................323 12.7.9 边框的使用 ...............................................................................................324 §12.8编写小应用程序 ................................................................................................328 12.8.1 Applet的特点 ............................................................................................328 12.8.2 Applet的编程模式 ....................................................................................328 12.8.3 Applet的编程举例 ....................................................................................330 内容小结.......................................................................................................................332 思考与练习...................................................................................................................332 上机实习题...................................................................................................................333 第十三章数据库编程初步...............................................................................................334 §13.1关系数据库与 SQL简介 ..................................................................................334 13.1.1 关系数据库的基本概念 ...........................................................................334 13.1.2 创建关系数据库举例 ...............................................................................334 13.1.3 SQL简介 ...................................................................................................337 §13.2 JDBC结构与原理..............................................................................................341 13.2.1 数据库应用的多层结构 ...........................................................................341 13.2.2 JDBC的结构.............................................................................................342 13.2.3 建立使用 JDBC的运行环境 ...................................................................343 §13.3 JDBC应用入门..................................................................................................344 13.3.1 使用 JDBC的编程模式 ...........................................................................344 13.3.2 Java与 SQL间的数据类型映射 ..............................................................347 13.3.3 使用数据表的元信息 ...............................................................................349 13.3.4 封装与数据库访问有关的操作 ...............................................................350 §13.4数据库应用程序举例 ........................................................................................353 - vii - 13.4.1 需求分析 ...................................................................................................353 13.4.2 系统设计 ...................................................................................................354 13.4.3 编码实现 ...................................................................................................356 内容小结.......................................................................................................................367 思考与练习...................................................................................................................368 上机实习题...................................................................................................................369 第十四章多线程编程.......................................................................................................370 §14.1线程的基本概念 ................................................................................................370 14.1.1 什么是线程? ...........................................................................................370 14.1.2 Java程序的线程 ....................................................................................370 §14.2线程生存期与线程调度 ....................................................................................371 14.2.1 创建线程 ...................................................................................................371 14.2.2 Java程序的主线程 ....................................................................................373 14.2.3 线程的生存期 ...........................................................................................373 14.2.4 使用 yield()方法 .......................................................................................374 14.2.5 优先级与线程调度 ...................................................................................375 14.2.6 线程组 .......................................................................................................377 14.2.7 守护线程 ...................................................................................................378 §14.3资源共享与线程同步 ........................................................................................379 14.3.1 线程安全性 ...............................................................................................379 14.3.2 同步代码段与锁 .......................................................................................380 14.3.3 设计线程安全的应用程序 .......................................................................382 §14.4其他线程通信方式 ............................................................................................383 14.4.1 使用 sleep()方法.......................................................................................383 14.4.2 使用 join()方法.........................................................................................383 14.4.3 使用 wait()/notify()/notifyAll()方法.........................................................384 14.4.4 使用 I/O操作 ...........................................................................................386 14.4.5 不主张使用的方法 ...................................................................................386 §14.5使用定时器 ........................................................................................................387 14.5.1 通用定时器 ...............................................................................................387 14.5.2 Swing专用定时器.....................................................................................389 §14.6高级多线程设计 ................................................................................................389 14.6.1 并发模型 ...................................................................................................389 14.6.2 互斥问题 ...................................................................................................391 14.6.3 生产者∕消费者问题 ...............................................................................393 内容小结.......................................................................................................................396 思考与练习...................................................................................................................396 上机实习题...................................................................................................................397 小课题:资源池与线程池...........................................................................................397 第十五章网络通信编程...................................................................................................399 §15.1网络通信的基本概念 ........................................................................................399 15.1.1 通信协议 ...................................................................................................399 15.1.2 TCP与 UDP ..............................................................................................401 15.1.3 端口...........................................................................................................401 15.1.4 Java对网络通信的支持 ............................................................................402 §15.2基于 URL的通信..............................................................................................403 15.2.1 使用 URL对象.........................................................................................403 15.2.2 使用 URL连接.........................................................................................405 §15.3基于 TCP的通信 ..............................................................................................407 15.3.1 指定主机 ...................................................................................................407 15.3.2 基于 socket的 C/S编程...........................................................................408 - viii - 15.3.3 多线程服务程序 .......................................................................................411 §15.4典型的因特网应用 ............................................................................................413 15.4.1 一个简单的端口扫描程序 .......................................................................413 15.4.2 一个简单的 HTTP服务程序...................................................................414 15.4.3 一个简单的 Telnet客户程序...................................................................415 15.4.4 一个简单的 SMTP客户程序 ..................................................................417 §15.5基于 UDP的通信..............................................................................................418 15.5.1 单播通信 ...................................................................................................418 15.5.2 多播通信 ...................................................................................................422 内容小结.......................................................................................................................424 思考与练习...................................................................................................................424 上机实习题...................................................................................................................425 第十六章结束语...............................................................................................................426 §16.1设计原则 ............................................................................................................426 16.1.1 设计原则与设计模式 ...............................................................................426 16.1.2 B. Meyer的设计原则................................................................................426 16.1.3 R. Martin的设计原则 ...............................................................................427 §16.2设计模式 ............................................................................................................428 16.2.1 什么是模式 ...............................................................................................428 16.2.2 GoF设计模式 ............................................................................................429 16.2.4 POSA设计模式.........................................................................................431 16.2.5 反模式 .......................................................................................................431 §16.3分布式对象技术 ................................................................................................432 16.3.1 进程内通信与进程间通信 .......................................................................432 16.3.2 实现网络通信的途径 ...............................................................................432 16.3.3 分布式对象系统 .......................................................................................432 内容小结.......................................................................................................................433 思考与练习...................................................................................................................433 上机实习题...................................................................................................................434

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值