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. 布局伪代码
- 整个窗体界面分成两部分:分别对应
BorderLayout的centre与south。新建布局layout。 - 在layout的center放入一个JPanel,将其布局管理器设置成
GridLayout,分别放入两个JLable与JTextField - 在layout的south放入一个JPanel,然后在该面板上放置两个按钮btn1 ,btn2。注:JPanel默认布局为
FlowLayout。 - 在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.改进
- 界面中的JTextField组件边缘与其他组件紧贴在一起,请使用
BorderFactory为其添加边框。 - 如何让登录界面更美观一点,比如插入背景图。
题目2: NetBeans基本使用(用户信息更改模块)

NetBeans简介、图形界面设计器、简单布局、组件布置(如,辅助线、组件对齐等)、组件变量名
事件处理代码。NetBeans常用快捷键:
ctrl+\(代码提示),Tab(自动完成,比如sout,然后按tab),Alt+Insert(自动生成代码,类似Eclipse中的Alt+Shift+S)使用
JPanel布置组件,设置带标题的边框。使用不同风格的外观。右键点击JFrame,选择Preview Design.
按钮监听器代码中包含3部分代码(引入MVC模式):
- 获取文本框数据并进行简单判断。如,name、age文本框不能为空。如果为空则弹出对话框提示“name不能为空”,并重设焦点(文本框的
requestFocus方法)到相应的文本框。 - 业务逻辑代码:对数据按照业务要求进行判断(如,提示年龄不能小于0)与处理(如对年龄+1)。
- 将处理后的数据更新到下方标签。
- 获取文本框数据并进行简单判断。如,name、age文本框不能为空。如果为空则弹出对话框提示“name不能为空”,并重设焦点(文本框的
使用MVC模式解释并改造上述代码。
常见问题:
- 组件与其变量名的对应关系。组件变量名最好要有意义,能体现出其类型,比如
nameTextField就是一个显示姓名的JTextField。 - 未将主窗体设置为主类无法启动。右键点击项目-属性(Properties)-运行(Run),设置正确的主类(Main Class)。
- 文本类型转化为数值类型时可能出错。常见错误:当字符串前后带空格时,当文本框输入的字符串为非数字的时候。
- GUI程序的发布:
- 方法1:生成可执行jar文件。参见参考资料
5.NetBeans生成可执行GUI jar程序.doc - 方法2:创建批处理脚本
Run.bat执行jar程序。
@echo off
start javaw -jar GUI1.jar
- 方法1:生成可执行jar文件。参见参考资料
4.进阶思考:
尝试在NetBeans上操作布局管理器、添加事件处理代码,实现题目1的界面与功能。
对比NetBeans自动生成的代码与自己手写的代码有何不同?(从布局管理器与事件处理代码这两个方面来分析)
题目3:数据交换与MVC模式
演示:DataExchangeTest.java。该文件见参考资料重要:GUI实验参考文件。
讲解:结合课件中的数据交换例子进行代码讲解。
题目4:使用NetBeans设计复杂用户界面
演示:
- 添加菜单栏、菜单、菜单项等,怎么为菜单项添加事件处理程序。
- 为程序添加一个JDialog。为JDialog设置BorderLayout,在BoderLayout上添加JPanel后,右键点击JPanel属性-Layout-Direction设置其在BorderLayout的方位。JDialog模式设置(modal属性)。
- 为JPanel设置布局管理器GridLayout。
- 添加另一个JPanel,添加JButton,将该JPanle放到JDialog的south(可以右键点击JDialog,选择
Add From Palette)。在Button中编写隐藏jDialog代码(jDialog.setVisible(false))。 - 使用“弹簧”(Vertical gap, Horizontal gap)调整组件位置。
- 在某个菜单项上添加弹出JDiaolg代码(
jDialog.pack();jDialog.setVisible(true);)。
任务:
- 使用MVC模式仿照题目3创建一个GUI程序。
- 在演示的基础上增加一个新的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模式编写购物车、学生管理系统、计算器等程序。
参考资料:
其他问题
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第05次实验提纲(Java图形界面编程)的更多相关文章
- Java第2次实验提纲(Java基本语法与类库)
1. 使用Git克隆(clone)项目到你的Eclipse项目中 见以下参考资料中的3 从码云将项目clone到你的电脑 重要提示: 使用Git来管理你的代码以后,当你在本机Eclipse项目中开始编 ...
- Java第02次实验提纲(Java基本语法与类库)
1. 熟悉Git 1.1 学会使用网页版的操作代码仓库(gitee) 申请账号,然后根据老师提供的链接或者二维码加入团队,然后修改昵称. fork老师提供的代码库项目,新建自己学号命名的文件并上传一些 ...
- Java基础(二十三)GUI图形界面编程(Java基础完)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- Java第5次实验提纲(Java图形界面编程)
1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...
- Java第6次实验提纲(异常)
PTA与参考资料 题集:集合 异常实验文件 第1次实验 1.1 7-1 常用异常 如何进行强制转换 如何捕获多种类型的异常 1.2 7-2 使用异常机制处理异常输入 在哪里加catch 1.3 7-3 ...
- Java第5次实验提纲(集合)
PTA与参考资料 重要参考-集合简述 题集:jmu-Java-05-集合 集合实验文件 第1次实验 1.1 7-1ArrayListIntegerStack(课堂演示) 注1:不要导入java.awt ...
- Java第07次实验提纲(异常)
PTA与参考资料 题集:集合 异常实验文件 第1次实验 1.1 7-1 常用异常 如何进行强制转换.父类型转化为子类型常见错误. 如何捕获多种类型的异常 简要输出异常信息,System.out.pri ...
- Java第06次实验提纲(集合)
PTA与参考资料 重要参考-集合简述 题集:jmu-Java-06-集合 集合实验文件 第1次实验 1.1 ArrayListIntegerStack(课堂演示) 可演示:jdk中的javadoc文档 ...
- 南邮JAVA程序设计实验1 综合图形界面程序设计
南邮JAVA程序设计实验1 综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ...
随机推荐
- Refused to execute inline event handler because it violates the following Content Security Policy directive: "xxx". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...')
/********************************************************************************* * Refused to exec ...
- pycharm远程服务器进行调试
背景是这样的:我有一台远程的服务器,以及一台本地的电脑:现在我想用远程的服务器上的python编译器来运行代码,怎么办?通用的做法是ssh服务器,vim代码,之后python运行文件,但是如果遇到调试 ...
- 使用NATS替换NSQ为后台服务解耦
简介 满世界的后台都在向微服务架构发展,我对微服务的理解是将一个复杂的业务分拆为多个服务,由多个服务协作完成一个服务:在后台微服务架构时需要考虑高可用.一致性等问题,也要考虑在实现上.编码上的复杂程度 ...
- CH0101 a^b、 CH0102 64位整数乘法(快速幂、快速乘)【模板题】
题目链接:传送门 //a^b 传送门 //64位整数乘法 题目: 描述 求 a 的 b 次方对 p 取模的值,其中 ≤a,b,p≤^ 输入格式 三个用空格隔开的整数a,b和p. 输出格 ...
- lesson3 overfitting -fastai
VGG:3*3Imagenet:7*7,9*9论文中证明3*3更胜一筹,但是用多少并没有定论微调:删掉模型的中间只对最后一层微调:model.pop,就删掉了最后一层 如何决定训练多少层?:·看论文上 ...
- 【BZOJ3244】【UOJ#122】【NOI2013]树的计数
NOI都是酱的题怎么玩啊,哇.jpg 原题: 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的 ...
- itcast-svn
svn介绍 1.1 svn服务器的工作方式 数据 库 服务 概念 使用数据库,连接服务,服务操作库 独立服务器方式: svnserve 借助Apache方式: mod_dav_svn ...
- <--------------------------Java多态如何使用------------------------------>
11多态调用的三种格式 * A:多态的定义格式: * 就是父类的引用变量指向子类对象 父类类型 变量名 = new 子类类型(); 变量名.方法名(); * B: 普通类多态定义的格式 父类 变量名 ...
- MySQL Transaction--Sprint中访问只读从库的设置
问题描述 按照正常情况,从库上只执行查询,但在从库上发现有长时间未提交的事务,联系开发后确认程序的配置问题. 解决办法 修改前代码为(基于spring框架): 修改后的代码为: Spring事务中 ...
- centos7 用yum安装java8
1.查看yum源中是否有相关套件yum -y list java* 2.上图中可以看到有两个自己想用的套件,经过试验发现用yum install java-1.8.0-openjdk 时最后 /usr ...