• Java第05次实验提纲(Java图形界面编程)


    1. Swing与NetBeans

    使用NetBeans编写简单界面。见GUI实验参考文件中0.第06次实验(图形程序设计、事件处理与Swing).doc

    题目1: Swing用户界面组件与事件处理(请使用Eclipse,不要使用NetBeans,手写界面布局与事件监听器代码)

    需完成如上界面。请在以下代码的基础上进行修改

    import javax.swing.JFrame;        
    
    public class HelloWorldSwing {
    
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("HelloWorldSwing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //your code       
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
    

    1. 布局伪代码

    1. 整个窗体界面分成两部分:分别对应BorderLayout的centre与south。新建布局layout。
    2. 在layout的center放入一个JPanel,将其布局管理器设置成GridLayout,分别放入两个JLable与JTextField
    3. 在layout的south放入一个JPanel,然后在该面板上放置两个按钮btn1 ,btn2。注:JPanel默认布局为FlowLayout
    4. 在btn1上注册事件监听器,功能:点击登录按钮,如果用户名、密码相同则提示“用户名密码正确!”,否则提示“用户名密码错误!”。说明:提示信息可使用输入对话框、信息对话框、确认对话框实现。

    2.参考代码
    BorderLayout参考代码

    JFrame f = new JFrame("BorderLayoutTest");
    f.setLayout(new BorderLayout());
    f.add(new JButton("North"), BorderLayout.NORTH);
    f.add(new JButton("South"), BorderLayout.SOUTH);
    f.add(new JButton("East"), BorderLayout.EAST);
    f.add(new JButton("West"), BorderLayout.WEST);
    f.add(new JButton("Center"), BorderLayout.CENTER);
    f.setSize(600, 600);
    f.setVisible(true);
    

    GirdLayout参考代码

    JFrame frame = new JFrame("GridLayout Test");
    JPanel panel = new JPanel(new GridLayout(2,2));
    panel.add(new JButton("btn1"));
    panel.add(new JButton("btn2"));
    panel.add(new JButton("btn3"));
    panel.add(new JButton("btn4"));
    frame.add(panel);
    

    各种对话框参考代码

    //输入对话框
    String x = JOptionPane.showInputDialog("请输入变量x的值:");
    System.out.println("x="+x);
    
    //消息对话框:用来显示消息。
    JOptionPane.showMessageDialog(null, "消息对话框");
    
    //确认对话框:根据不同的选择会有不同的返回值
    int choice = JOptionPane. showConfirmDialog(null, "请选择");
    
    /*
    JOptionPane.YES_OPTION
    JOptionPane.NO_OPTION
    JOptionPane.CANCEL_OPTION
    上面的几个都是预先定义好的常量,比如
    JOptionPane.YES_OPTION等于0
    使用常量使代码可读性更好
    */
    
    

    对话框参考资料:Java中对话框的弹出

    3.改进

    1. 界面中的JTextField组件边缘与其他组件紧贴在一起,请使用BorderFactory为其添加边框。
    2. 如何让登录界面更美观一点,比如插入背景图。

    题目2: NetBeans基本使用(用户信息更改模块)

    • NetBeans简介、图形界面设计器、简单布局、组件布置(如,辅助线、组件对齐等)、组件变量名

    • 事件处理代码。NetBeans常用快捷键:ctrl+(代码提示),Tab(自动完成,比如sout,然后按tab),Alt+Insert(自动生成代码,类似Eclipse中的Alt+Shift+S)

    • 使用JPanel布置组件,设置带标题的边框。

    • 使用不同风格的外观。右键点击JFrame,选择Preview Design.

    • 按钮监听器代码中包含3部分代码(引入MVC模式):

      1. 获取文本框数据并进行简单判断。如,name、age文本框不能为空。如果为空则弹出对话框提示“name不能为空”,并重设焦点(文本框的requestFocus方法)到相应的文本框。
      2. 业务逻辑代码:对数据按照业务要求进行判断(如,提示年龄不能小于0)与处理(如对年龄+1)。
      3. 将处理后的数据更新到下方标签。
    • 使用MVC模式解释并改造上述代码。

    • 常见问题:

    1. 组件与其变量名的对应关系。组件变量名最好要有意义,能体现出其类型,比如nameTextField就是一个显示姓名的JTextField
    2. 未将主窗体设置为主类无法启动。右键点击项目-属性(Properties)-运行(Run),设置正确的主类(Main Class)。
    3. 文本类型转化为数值类型时可能出错。常见错误:当字符串前后带空格时,当文本框输入的字符串为非数字的时候。
    • GUI程序的发布:
      • 方法1:生成可执行jar文件。参见参考资料5.NetBeans生成可执行GUI jar程序.doc
      • 方法2:创建批处理脚本Run.bat执行jar程序。
          @echo off
          start javaw -jar GUI1.jar
      

    4.进阶思考:
    尝试在NetBeans上操作布局管理器、添加事件处理代码,实现题目1的界面与功能。
    对比NetBeans自动生成的代码与自己手写的代码有何不同?(从布局管理器与事件处理代码这两个方面来分析)

    题目3:数据交换与MVC模式

    演示:DataExchangeTest.java。该文件见参考资料重要:GUI实验参考文件
    讲解:结合课件中的数据交换例子进行代码讲解。

    题目4:使用NetBeans设计复杂用户界面

    演示:

    1. 添加菜单栏、菜单、菜单项等,怎么为菜单项添加事件处理程序。
    2. 为程序添加一个JDialog。为JDialog设置BorderLayout,在BoderLayout上添加JPanel后,右键点击JPanel属性-Layout-Direction设置其在BorderLayout的方位。JDialog模式设置(modal属性)。
    3. 为JPanel设置布局管理器GridLayout。
    4. 添加另一个JPanel,添加JButton,将该JPanle放到JDialog的south(可以右键点击JDialog,选择Add From Palette)。在Button中编写隐藏jDialog代码(jDialog.setVisible(false))。
    5. 使用“弹簧”(Vertical gap, Horizontal gap)调整组件位置。
    6. 在某个菜单项上添加弹出JDiaolg代码(jDialog.pack();jDialog.setVisible(true);)。

    任务:

    1. 使用MVC模式仿照题目3创建一个GUI程序。
    2. 在演示的基础上增加一个新的JDialog,上面放置JTable进行题目5的展示。

    题目5:在NetBeans中使用JTable

    演示:
    怎么在Netbeans中设置JTable控件的属性。右键点击JTable,点击Table Contents
    进阶:
    为JTable编写自己的TableModel。可参考DefaultTableModel的实现。
    重要参考资料:JTable案例中如何使用JTable。详见其中的jTableDemo,使用代码控制JTable。

    参考资料:

    Java GUI 中的JTable-Netbeans设置
    Create and use Java Table in NetBeans
    JTable常见用法细则-主要讲DefaultTableModel的使用

    题目6:其他可选题目

    查看以下参考资料,并思考Student做什么:StudentController做什么?StudentView做什么?他们之间是什么关系?
    5.1 模仿Windows记事本,编写一个简易记事本。
    5.2 尝试使用MVC模式编写购物车、学生管理系统、计算器等程序。

    参考资料:

    MVC模式简介-主要看StudentController是怎样协调Model与View

    其他问题

    1.系统安装JDK 9以上,在Eclipse编写Swing程序,提示javax.swing cannot be resolved to a type

    原因:JDK 9及以上引入模块系统,java swing相关包默认没有被导入。
    解决:需要在Eclipse项目中的module-info.java加入requires java.desktop;。注意:请安装较高版本的Eclipse。

    2.无法安装NetBeans,提示找不到JRE。或者安装成功,打开后,就是无法新建项目。

    原因:NetBeans 8.2还不支持JDK 9及以上。
    解决:安装JDK 8或者安装Netbeans 9.0。有可能还需要修改netbeans安装目录etc下的netbeans.conf文件,修改里面的netbeans_jdkhome的值为jdk8的安装目录。注意:NetBeans 9.0安装后无法运行,也可考虑通过修改netbeans_jdkhome来解决,将其设置为jdk9及以上的安装目录。
    参考资料:Can't create project on Netbeans 8.2

    本次实验参考资料:

    重要:视频-使用Netbeans编写GUI
    重要:GUI实验参考文件
    Java中对话框的弹出
    JTable常见用法细则-主要讲DefaultTableModel的使用
    JTable用法-进阶
    Swing组件使用系列文章
    官方文档-在 NetBeans IDE 中设计 Swing GUI
    官方文档-在 Java GUI 应用程序中处理图像(如,设置背景图片)
    官网-使用Netbeans开发企业应用的一些案例
    官方文档-Java Tutorial-Swing

    其他参考资料

    Java Swing Tutorial
    各种计算机技术的Tutorial
    第一篇 开始学习JavaFX
    Open JavaFX
    MVC模式简介-主要看StudentController是怎样协调Model与View

    Java游戏参考资料

    虽然使用Java开发的游戏(如MineCraft)较少,但初学Java 2D,可尝试使用Java编写一些简单的小游戏。主要学习Java游戏入门1-Java 2D games tutorial中的图形界面游戏基本原理:Basics、Animation、Moving sprites、Collision detection。知其然、知其所以然。怎么学?先把程序跑起来,然后尝试看懂程序并进行改造。
    参考资料:
    Java游戏入门:

    Java游戏入门1-Java 2D games tutorial
    Java游戏入门2-南洋理工大学的-Java Game Programming
    Introduction to JavaFX for Game Development

    Java游戏框架:

    2D Java Game Library-Slick2D,基于LWJGL
    Java 3D游戏引擎-JMonkeyEngine,基于LWJGL

    Java游戏第三方库:

    Lightweight Java Game Library 3(LWJGL)-OpenGL、OpenAL、OpenCL偏向底层处理-

    GUI实验参考文件说明:
    0.第06次实验(图形程序设计、事件处理与Swing).doc
    1.使用NetBeans设计GUI(by zhrb).doc-NetBeans教程。
    2.NetBeans使用脚本.txt
    3.一个简单的包括菜单的GUI小程序(SwingTest).zip-手写GUI示例代码(包含CardLayout、窗体间传递数据、MVC模式、外观观感、窗口放在屏幕中央等演示)。
    4.DataExchangeTest.java-数据在GUI中如何传递。

    参考链接

    Java第06次实验提纲(集合)

  • 相关阅读:
    gulp教程、gulp-less安装
    vue学习总结
    javascript数组去重
    【操作系统】操作系统高频面试考点总结
    【面经系列】一线互联网大厂前端面试技巧深入浅出总结
    【编程题与分析题】Javascript 之继承的多种实现方式和优缺点总结
    【计算机网络】TCP基础知识详解
    【操作系统】操作系统面试基础知识点总结
    【数据结构与算法】数据结构基础知识总结(面试考点)
    【前端知识体系-JS相关】JS-Web-API总结
  • 原文地址:https://www.cnblogs.com/zhrb/p/7761971.html
Copyright © 2020-2023  润新知