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


使用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,将该JPanel放到JDialog的south(可以右键点击JDialog,选择Add From Palette)。在Button中编写隐藏jDialog代码(jDialog.setVisible(false))。

  5. 使用“弹簧”(Vertical gap, Horizontal gap)调整组件位置。

  6. 在某个菜单项上添加弹出JDiaolg代码(jDialog.pack();jDialog.setVisible(true);)。

最后,附一张自己面试前准备的脑图:

image

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

image

  • Spring全家桶(实战系列)

![image.png](https://upload-images.jianshu.io/upload_images/246131

必看视频!获取2024年最新Java开发全套学习资料 备注Java

01-d64d77f9e04396b9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

image

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!
w2/2/w/1240)

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

[外链图片转存中…(img-RBPbvW5t-1716464625647)]

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值