4Java第四单元练习题-图形用户界面

合集下载

Java图形用户界面设计

Java图形用户界面设计

13
(3) 事件监听器(Listener) 事件处理机制中的核心部分,主要的功能大致可以分为 两部分:第一,监听组件,观察组件有没有发生某类事 件;第二,如果监听的组件发生了某类事件,则调用对 应的动作处理方法立刻处理这个事件。 在Java事件处理机制中,监听器处于主体地位。与事件 分类对应,监听器也相应的分成若干种类型,例如,鼠 标事件对应鼠标监听器,键盘事件对应键盘监听器,窗 口事件对应窗口监听器等。
25
5.3.2 AWT组件库常用组件举例 【问题1】 在窗口f中,有一个文本框tf,三个按钮btn_1、 btn_2、btn_3。当使用鼠标点击btn_1时,文本框显示 btn_1按钮被点击,当使用鼠标点击btn_2按钮时,文本框 显示btn_2按钮被点击,当使用鼠标点击btn_3按钮或者窗 口f的关闭按钮时,窗口关闭,程序退出。
(4) Choice Choice表示下拉选择框组件,选择框中的每一个选项称 为一个Item,Item的类型一般为String字符串。 (5) Label Label表示标签组件,主要作用在于创建提示性的文本。
23
(6) MenuBar、Menu和MenuItem MenuBar表示菜单条组件,该组件由Menu菜单构成,而 Menu菜单又可由Menu菜单和MenuItem菜单项构成。 (7) TextField TextField表示文本框组件,与文本域组件不同的是, 文本框中只能有一行文本。 (8) TextArea TextArea表示文本域组件,可以容纳多行文本。
30
(3) JRadioButton和ButtonGroup 在Swing中与Checkbox对应的是JCheckBox,实际使用时, 如果需要创建单选框组的话,经常使用的是 JRadioButton而非JCheckBox。如果将多个JRadioButton 组件放在一个ButtonGroup中时,这些JRadioButton组件 将不再具有复选功能,而是只具有单选功能,也即变成 单选框。 (4) JComboBox JcomboBox对应于AWT中的Choice,表示下拉选择框组件, 选择框中的每一个选项称为一个Item,Item的类型一般 为String字符串,也可以是指定的泛型类型。

java练习题一到四章

java练习题一到四章

第一章:Java基础1.1 Java语言概述1.1.1 Java语言的起源1.1.2 Java语言的特点1.1.3 Java语言的运行环境1.1.4 Java语言的开发工具1.2 Java语法基础1.2.1 数据类型1.2.2 变量和常量1.2.3 运算符1.2.4 控制语句1.3 面向对象编程1.3.1 类和对象1.3.2 构造方法1.3.3 继承1.3.4 多态1.3.5 封装1.4 异常处理1.4.1 异常的概念1.4.2 异常的捕获与处理1.4.3 自定义异常1.5 Java集合框架1.5.1 List接口1.5.2 Set接口1.5.3 Map接口1.5.4 Collection类1.5.5 Iterator接口1.5.6 Collection框架的常用类第二章:Java进阶2.1 Java多线程2.1.1 线程的概念2.1.2 线程的创建与运行2.1.3 线程同步2.1.4 线程通信2.2 Java网络编程2.2.1 URL类2.2.2 Socket编程2.2.3 HTTP协议2.3 Java数据库编程2.3.1 JDBC概述2.3.2 JDBC连接数据库2.3.3 JDBC查询与更新2.3.4 JDBC事务管理2.4 Java设计模式2.4.1 单例模式2.4.2 工厂模式2.4.3 代理模式2.4.4 装饰者模式2.4.5 策略模式第三章:Java框架3.1 Spring框架3.1.1 Spring框架概述3.1.2 依赖注入3.1.3 AOP3.1.4 Spring MVC3.2 MyBatis框架3.2.1 MyBatis概述3.2.2 MyBatis配置3.2.3 MyBatis映射文件3.2.4 MyBatis动态SQL3.3 Spring Boot框架3.3.1 Spring Boot概述3.3.2 Spring Boot配置3.3.3 Spring Boot自动配置3.3.4 Spring Boot集成3.4 Spring Cloud框架3.4.1 Spring Cloud概述3.4.2 Spring Cloud配置3.4.3 Spring Cloud服务治理3.4.4 Spring Cloud分布式事务第四章:Java项目实战4.1 Java项目开发流程4.1.1 需求分析4.1.2 系统设计4.1.3 编码实现4.1.4 测试与部署4.2 Java项目案例4.2.1 基于Spring Boot的博客系统4.2.2 基于Spring Cloud的电商平台4.2.3 基于Java的在线教育平台4.2.4 基于Java的社交网络平台第五章:Java高级特性5.1 Lambda表达式5.1.1 Lambda表达式的基本语法5.1.2 Lambda表达式的应用场景5.1.3 Stream API5.2 Java NIO5.2.1 NIO概述5.2.2 文件IO操作5.2.3 缓冲区5.2.4 非阻塞IO5.3 Java内存模型5.3.1 内存区域5.3.2 垃圾回收5.3.3 内存泄漏5.4 Java并发编程5.4.1 线程池5.4.2 锁5.4.3 同步与并发工具类5.4.4 并发编程的艺术第六章:Java Web开发6.1 HTML与CSS6.1.1 HTML基本语法6.1.2 CSS样式表6.1.3 HTML5与CSS3新特性6.2 JavaScript基础6.2.1 JavaScript语法6.2.2 常用内置对象6.2.3 事件处理6.3 Java Web技术6.3.1 Servlet6.3.2 JSP6.3.3 EL表达式6.3.4 JSTL6.3.5 Filter和Listener 6.4 前端框架6.4.1 React6.4.2 Angular6.4.3 Vue.js第七章:Java安全与性能优化7.1 Java安全机制7.1.1 权限控制7.1.2 加密技术7.1.3 安全框架7.2 Java性能优化7.2.1 常见性能问题7.2.2 JVM调优7.2.3 代码优化7.2.4 数据库优化7.3 Java监控与日志7.3.1 监控工具7.3.2 日志框架7.3.3 日志管理第八章:Java项目实战案例8.1 企业级项目架构设计8.1.1 架构模式8.1.2 微服务架构8.1.3 分布式架构8.2 实战案例一:在线购物平台8.2.1 需求分析8.2.2 系统设计8.2.3 技术选型8.2.4 项目实施8.3 实战案例二:企业资源规划(ERP)系统8.3.1 需求分析8.3.2 系统设计8.3.3 技术选型8.3.4 项目实施8.4 实战案例三:银行系统8.4.1 需求分析8.4.2 系统设计8.4.3 技术选型8.4.4 项目实施第九章:Java EE技术9.1 Java EE概述9.2 Java EE核心技术9.2.1 EJB9.2.2 JPA9.2.3 JSF9.2.4 JMS9.2.5 Java EE安全性9.3 Java EE项目案例9.3.1 企业信息管理系统9.3.2 电子商务平台9.3.3 人力资源管理系统第十章:Java开发工具与环境10.1 Java开发工具10.1.1 IntelliJ IDEA 10.1.2 Eclipse10.1.3 NetBeans10.2 构建工具10.2.1 Maven10.2.2 Gradle10.3 版本控制10.3.1 Git10.3.2 SVN10.4 调试工具10.4.1 JDBCTrace10.4.2 JProfiler10.4.3 VisualVM第十一章:Java面试题11.1 Java基础面试题11.1.1 Java内存模型11.1.2 Java集合框架11.1.3 Java多线程11.1.4 Java异常处理11.2 Java Web面试题11.2.1 Servlet生命周期11.2.2 JSP原理11.2.3 JavaScript面试题11.3 数据库面试题11.3.1 JDBC11.3.2 MySQL11.3.3 Oracle11.4 Java框架面试题11.4.1 Spring框架11.4.2 MyBatis框架11.4.3 Spring Boot框架第十二章:Java技术前沿12.1 Java 9新特性12.1.1 模块化系统12.1.2 流式API12.1.3 JShell12.2 Java 10新特性12.2.1 LocalVariable Type Inference12.2.2 ZGC12.2.3 HTTP/212.3 Java 11新特性12.3.1 JEP 321: Dynamic ClassFile Constants 12.3.2 JEP 322: ForeignMemory Access API 12.3.3 JEP 323: HTTP/2 Client12.4 Java未来发展趋势12.4.1 云计算12.4.2 微服务12.4.3 容器化技术第十三章:Java性能调优13.1 JVM性能调优13.1.1 JVM参数优化13.1.2 垃圾收集器选择13.1.3 内存泄漏检测13.2 代码性能调优13.2.1 数据结构选择13.2.2 算法优化13.2.3 循环优化13.3 网络性能调优13.3.1 网络延迟优化13.3.2 网络吞吐量优化13.3.3 网络安全优化第十四章:Java安全编程14.1 Java安全机制14.1.1 访问控制14.1.2 权限管理14.1.3 安全认证14.2 加密技术14.2.1 对称加密14.2.2 非对称加密14.2.3 哈希算法14.3 安全框架14.3.1 Spring Security14.3.2 Apache Shiro14.3.3 Java Cryptography Architecture (JCA)第十五章:Java并发编程高级15.1 并发工具类15.1.1 CountDownLatch15.1.2 CyclicBarrier15.1.3 Semaphore15.1.4 Exchanger15.2 并发编程模型15.2.1 生产者消费者模型15.2.2 管道模型15.2.3 线程池模型15.3 并发编程的艺术15.3.1 锁的优化15.3.2 死锁的避免15.3.3 线程安全的集合第十六章:Java分布式系统16.1 分布式系统概述16.1.1 分布式计算16.1.2 分布式存储16.1.3 分布式事务16.2 分布式技术16.2.1 ZooKeeper16.2.2 Kafka16.2.3 Redis16.2.4 Dubbo16.3 分布式系统设计16.3.1 负载均衡16.3.2 服务发现16.3.3 数据同步第十七章:Java大数据技术17.1 Hadoop生态圈17.1.1 Hadoop概述17.1.2 HDFS17.1.3 MapReduce17.1.4 YARN17.2 Spark17.2.1 Spark概述17.2.2 Spark Core17.2.3 Spark SQL17.2.4 Spark Streaming 17.3 Flink17.3.1 Flink概述17.3.2 Flink流处理17.3.3 Flink批处理18.1 机器学习基础18.1.1 线性回归18.1.2 逻辑回归18.1.3 决策树18.1.4 支持向量机18.2 深度学习18.2.1 神经网络18.2.2 卷积神经网络18.2.3 循环神经网络18.3 Java深度学习框架18.3.1 Deeplearning4j 18.3.2 TensorFlow 18.3.3 PyTorch答案第一章:Java基础1.1 Java语言概述Java语言的起源Java语言的特点Java语言的运行环境 Java语言的开发工具1.2 Java语法基础数据类型变量和常量运算符控制语句1.3 面向对象编程类和对象构造方法继承多态封装1.4 异常处理异常的概念异常的捕获与处理自定义异常1.5 Java集合框架List接口Set接口Map接口Collection类Iterator接口Collection框架的常用类第二章:Java进阶2.1 Java多线程线程的概念线程的创建与运行线程同步线程通信2.2 Java网络编程URL类Socket编程HTTP协议2.3 Java数据库编程 JDBC概述JDBC连接数据库JDBC查询与更新JDBC事务管理2.4 Java设计模式单例模式工厂模式代理模式装饰者模式策略模式第三章:Java框架3.1 Spring框架Spring框架概述依赖注入AOPSpring MVC3.2 MyBatis框架MyBatis概述MyBatis配置MyBatis映射文件MyBatis动态SQL3.3 Spring Boot框架Spring Boot概述Spring Boot配置Spring Boot自动配置Spring Boot集成3.4 Spring Cloud框架Spring Cloud概述Spring Cloud配置Spring Cloud服务治理Spring Cloud分布式事务第四章:Java项目实战4.1 Java项目开发流程需求分析系统设计编码实现测试与部署4.2 Java项目案例基于Spring Boot的博客系统基于Spring Cloud的电商平台基于Java的在线教育平台基于Java的社交网络平台第五章:Java高级特性5.1 Lambda表达式Lambda表达式的基本语法Lambda表达式的应用场景Stream API5.2 Java NIONIO概述文件IO操作缓冲区非阻塞IO5.3 Java内存模型内存区域垃圾回收内存泄漏5.4 Java并发编程线程池锁同步与并发工具类并发编程的艺术第六章:Java Web开发6.1 HTML与CSSHTML基本语法CSS样式表HTML5与CSS3新特性6.2 JavaScript基础 JavaScript语法常用内置对象事件处理6.3 Java Web技术ServletJSPEL表达式JSTLFilter和Listener6.4 前端框架ReactAngularVue.js第七章:Java安全与性能优化7.1 Java安全机制权限控制加密技术安全框架7.2 Java性能优化常见性能问题JVM调优代码优化数据库优化7.3 Java监控与日志监控工具日志框架日志管理第八章:Java项目实战案例8.1 企业级项目架构设计架构模式微服务架构分布式架构8.2 实战案例一:在线购物平台需求分析系统设计技术选型项目实施8.3 实战案例二:企业资源规划(ERP)系统需求分析系统设计技术选型项目实施8.4 实战案例三:银行系统需求分析系统设计技术选型项目实施第九章:Java EE技术9.1 Java EE概述Java EE核心技术EJBJPAJSFJMSJava EE安全性9.2 Java EE项目案例企业信息管理系统电子商务平台人力资源管理系统第十章:Java开发工具与环境10.1 Java开发工具。

java图形用户界面设计教程

java图形用户界面设计教程

每个组件也有自己的初始大小。 当窗口设置的宽度小于组件的初始宽度时, 窗口宽度会 自动变为组件的宽度,但窗口高度不会改变。 在摆放组件时,如果不设定组件的对齐方式,那么 FlowLayout 布局管理器是按居中对 齐的方式摆放组件的。也可以通过向 FlowLayout 构造方法传递参数的方式设置所需的对齐 方式。FlowLayout 布局管理器的对齐方式有: FlowLayout.CENTER、FlowLaout.TRAILING 和 FlowLayout.LEADING。分别表示居中对齐、右对齐和左对齐。 设置的方法如下面的语句所示: contentPane.setLayout(new FlowLayout(FlowLayout.LEADING)); 这语句可以将组件的对齐方式设置为左对齐 还可以设置组件之间的水平和垂直间距。 设置的方法如下面的语句所示: contentPane.setLayout(new FlowLayout(FlowLayout.LEADING , 50 , 50)); 这条语句的含义就是将组件间的水平和垂直间距都设置为 50。
图 4-2 FlowLayout 布局管理器
2. 任务实施 任务 1 中的第 9 行就是对窗口布局的设置语句。语句如下: contentPane.setLayout(new GridLayout(5,1)); 只要对这一行进行更改,就可以达到应用 FLowLayout 布局管理器的目的。 contentPane 是一个对象,它指向的是 Container 类。关于这个类的含义和作用会在以后 的章节中详细讲解。读者暂时只需要知道 contentPane 引用是指向所建立的“帮助窗口”就 可以了。 从 contentPane 所调用的 setLayout()方法的方法名的含义就可以知道这个方法的作用 — 设置(set)布局(layout) 。通过对这个方法的参数赋予不同布局管理器的引用,达到对窗 口进行布局设置的目的。 要实现将“帮助窗口”的布局管理器设置为 FlowLayout,只需要做如下的更改。 contentPane.setLayout(new FlowLayout()); 其中的参数 new FlowLayout() 实际上是 FlowLayout 类的一个引用。这条语句的含义就 是:将 contentPane 所指向窗口的布局管理器设置成 FlowLayout。 还有另外一种设置布局管理器的方法。如下语句所示。 语句 1:FlowLayout flow= new FlowLayout(); 语句 2:contentPane.setLayout(flow); 语句 1 创建了 FlowLayout 布局管理器的引用。语句 2 将语句 1 所创建的 flow 引用作为 参数传递给 setLayout ()方法。 flow 引用等价于 new FlowLayout()。 因此, 语句 contentPane.setLayout(new FlowLayout()) 实际上是语句 1 和语句 2 的组合写法。 3. 分析与提高 FlowLayout 布局管理器是 Panel 和 Applet 容器的默认局管理器。 如果不专门对 Panel 和 Applet 进行布局管理器设置的话,它们的组件的布局将按 FlowLayout 进行管理。 Panel 和 Applet 都是一种容器。Panel 和窗口很类似,Applet 是嵌在浏览器中使用的一种客容器。这 两个容器会在后面的章节中介绍。 FlowLayout 布局管理器对窗口中的组件的管理是与窗口的大小有关的。在任务 1 中有 如下的语句: win.setSize(200,200); 这条语句设置了窗口的初始值大小。第一个参数为窗口的宽度,第二个参数为窗口的高度。 FlowLayout 布局管理器会根据这个大小来摆放组件。如果我们使用拖动的方法,改变窗口 的大小,窗口中组件的排列方式也会跟着改变。

图形用户界面

图形用户界面

public static void main(String[] args){public static void main(String[] args) {p.setPreferredSize(new Dimension(150,100)); setPreferredSize(new Dimension(150,100));20public static void main(String[] args) {("Button Demo");26import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyButton extends JPanel {private JButton b1, b2, b3;public MyButton() {b1 = new JButton("Disable middle button"); b1.setMnemonic(KeyEvent.VK_D);//快捷键Alt+D b2 = new JButton("Middle button");b2.setToolTipText("Does nothing when you click it.");b3 = new JButton("Enable middle button");b3.setEnabled(false);add(b1); add(b2); add(b3);}b1.addActionListener (new ButtonListener());b3.addActionListener (new ButtonListener());extends JPanelpublic class GridTest extends JPanel{public GridTest() {setPreferredSize(new Dimension(200,150));事件处理过程麦当劳",true);bgroup1 = new ButtonGroup();setBorder(BorderFactory.createTitledBorder" };p2.setPreferredSize(new Dimension(250,60));public class PasswordTest extends JPanel{JLabel l3;JPasswordField t1;public PasswordTest() {setLayout(new GridLayout(2,2));setBorder(BorderFactory.createTitledBorder("JPasswordField事件处理范例"));JLabel l1 = new JLabel("输入:");JLabel l2 = new JLabel("输入后,按下Enter ==>");l3 = new JLabel("");t1 = new JPasswordField();t1.addActionListener(new Change());add(l1);add(t1);add(l2);add(l3);}90用户名:");密码:"); JTextFieldDemo();tField.addKeyListener(new Change());public class myFrame extends JFrame{menuBar= new JMenuBar();setJMenuBar(menuBar);menu = new JMenu(“File”);menuBar.add(menu);item = new JMenuItem(“New”);menu.add(item);public static void main(String args[]){。

Java实验四GUI图形设计

Java实验四GUI图形设计

实验四GUI图形界面设计一实验要求1、掌握Awt与Swing的区别与联系;掌握Swing常用图像组件的使用;掌握主要的布局管理器的使用方法;2、了解事件处理机制;掌握Swing常用图像组件的使用;掌握固定菜单和弹出式菜单的创建和使用;二实验内容设计并实现一个类似于windows操作系统附件中自带的计算器的一款简单的计算器,要求界面美观,设计合理;带有常用的菜单并实现其功能;能完成加、减、乘、除等简单的计算,在下面写出其核心代码。

package cn.itcast;import java.io.*;import java.awt.*;import java.awt.event.*;public class Calendar {double x;double y;public double Sum(double x,double y){double result1=x+y;return result1;}public double Subtract(double x,double y){ double result2=x-y;return result2;}public double Mutiplute(double x,double y){ double result3=x*y;return result3;}public double Divide(double x,double y){ double result4=x/y;return result4;}/*** @param args*/public static void main(String[] args)throws Exception {// TODO Auto-generated method stubfinal Frame f=new Frame("计算器");f.setLayout(newFlowLayout(FlowLayout.LEFT,20,30));f.setSize(200,300);f.setLocation(300,200);Button but1=new Button("加");f.add(but1);try{double result1=Sum();System.out.println(result1);double result2=Subtract();System.out.println(result2);double result3=Mutiplute();System.out.println(result3);double result4=Divide();System.out.println(result4);}catch(Exception e){System.out.println(e);}finally{}}}package com.weixin;import java.awt.BorderLayout;//边界布局管理器import java.awt.Color;import java.awt.GridLayout;//网络布局管理器import java.awt.event.ActionEvent;//动作事件import java.awt.event.ActionListener;//动作监听者import java.awt.event.WindowEvent;//窗体事件import java.awt.event.WindowListener;//窗体监听者import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;/*** 计算器* @author Administrator**/public class Calculator {/*** 文本框对象*/private JTextField text;/*** 表明前一次点击的是操作符还是数字*/private boolean isOperator = false;/*** 第一个操作符在点击第二个操作符的时候做什么运算*/private String operator;/*** 第一个操作数*/private int value1;public Calculator() {init();}/*** 内部类监听数字按钮* @author Administrator**/private class NumberListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {//得到点击哪个按钮JButton button = (JButton)e.getSource();//得到按钮的值String value = button.getText();//前面点击了操作符if(isOperator) {text.setText(value);} else {//设置文本框内容String oldTextValue = text.getText();text.setText(oldTextValue+value);}isOperator = false;}}/*** 操作符监听器* @author Administrator**/private class OperatorListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {//得到点击哪个按钮JButton button = (JButton)e.getSource();//得到按钮的值String value = button.getText();if(operator==null) { //第一次点击操作符operator = value;value1 = Integer.parseInt(text.getText()); //得到第一个操作数} else { //第二次点击操作符int value2 = Integer.parseInt(text.getText());//得到第二个操作数//两个操作数运算int result = 0;if("+".equals(operator)) {result = value1+value2;} else if("-".equals(operator)) {result = value1-value2;} else if("*".equals(operator)) {result = value1*value2;} else if("/".equals(operator) ) {if(value2==0) {text.setText("除数不能为0");} else {System.out.println("else");result = value1/value2;}} else {//操作符是等号operator = null;result = value2;}text.setText(result+"");//设置结果为操作数1value1 = result;//设置操作符为当前操作符operator = value;}//表明点击了操作符isOperator = true;}}/*** 清空按钮* @author Administrator**/private class ClearListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {//表示没有点击操作符isOperator = false;//操作符为空operator = null;//文本框内容为0text.setText(0+"");//第一个操作数为0value1 = 0;}}/*** 初始化组件*/private void init() {//frame:默认是BorderLayoutJFrame frame = new JFrame("计算器");frame.setSize(400,300);//文本框text = new JTextField("0");text.setColumns(20);//清空按钮JButton clearButton = new JButton("清空");clearButton.setForeground(Color.RED);clearButton.addActionListener(new ClearListener());JPanel northPanel = new JPanel();northPanel.add(text);northPanel.add(clearButton);frame.add(northPanel,BorderLayout.NORTH);//中间面板JPanel centerPanel = new JPanel();GridLayout grid = new GridLayout(4,4,5,5);//设置中间面板的布局是:表格布局centerPanel.setLayout(grid);//centerPanel.setBackground(Color.YELLOW);JButton button7 = new JButton("7");button7.setForeground(Color.BLUE);//增加监听器匿名内部类button7.addActionListener(new NumberListener());centerPanel.add(button7);JButton button8 = new JButton("8");button8.setForeground(Color.BLUE);//增加监听器button8.addActionListener(new NumberListener()); centerPanel.add(button8);JButton button9 = new JButton("9");button9.setForeground(Color.BLUE);button9.addActionListener(new NumberListener()); centerPanel.add(button9);JButton buttonDivid = new JButton("/"); buttonDivid.setForeground(Color.red);buttonDivid.addActionListener(new OperatorListener()); centerPanel.add(buttonDivid);//一行okJButton button4 = new JButton("4");button4.setForeground(Color.BLUE);button4.addActionListener(new NumberListener()); centerPanel.add(button4);JButton button5 = new JButton("5");button5.setForeground(Color.BLUE);button5.addActionListener(new NumberListener()); centerPanel.add(button5);JButton button6 = new JButton("6");button6.setForeground(Color.BLUE);button6.addActionListener(new NumberListener()); centerPanel.add(button6);JButton buttonMul = new JButton("*");buttonMul.setForeground(Color.red);buttonMul.addActionListener(new OperatorListener()); centerPanel.add(buttonMul);//二行okJButton button1 = new JButton("1");button1.setForeground(Color.BLUE);button1.addActionListener(new NumberListener()); centerPanel.add(button1);JButton button2 = new JButton("2");button2.setForeground(Color.BLUE);button2.addActionListener(new NumberListener());centerPanel.add(button2);JButton button3 = new JButton("3");button3.setForeground(Color.BLUE);button3.addActionListener(new NumberListener());centerPanel.add(button3);JButton buttonMinus = new JButton("-");buttonMinus.setForeground(Color.red);buttonMinus.addActionListener(new OperatorListener());centerPanel.add(buttonMinus);//三行okJButton button0 = new JButton("0");button0.setForeground(Color.BLUE);button0.addActionListener(new NumberListener());centerPanel.add(button0);JButton button = new JButton(".");button.setForeground(Color.BLUE);centerPanel.add(button);JButton buttonEquals = new JButton("=");buttonEquals.setForeground(Color.red);buttonEquals.addActionListener(new OperatorListener());centerPanel.add(buttonEquals);JButton buttonAdd = new JButton("+");buttonAdd.setForeground(Color.RED);buttonAdd.addActionListener(new OperatorListener());centerPanel.add(buttonAdd);//四行okJPanel outPanel = new JPanel();outPanel.add(centerPanel);frame.add(outPanel,BorderLayout.CENTER);//outPanel.setBackground(Color.blue);//窗体紧凑显示frame.pack();//设置窗体可见frame.setVisible(true);}public static void main(String[] args) { Calculator cal = new Calculator();}}package com.weixin;import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;/*** 计算器* @author Administrator**/public class CalculatorDouble {/*** 文本框对象*/private JTextField text;/*** 表明前一次点击的是操作符还是数字*/private boolean isOperator = false;/*** 第一个操作符在点击第二个操作符的时候做什么运算*/private String operator;/*** 第一个操作数*/private double value1;public CalculatorDouble() {//这是干嘛???init();}/*** 内部类监听数字按钮* @author Administrator**/private class NumberListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {//得到点击哪个按钮JButton button = (JButton)e.getSource();//得到按钮的值String value = button.getText();//前面点击了操作符if(isOperator) {text.setText(value);} else {//设置文本框内容String oldTextValue = text.getText();text.setText(oldTextValue+value);}isOperator = false;//什么意思???}}private class PointListener implements ActionListener {//这里处理小数@Overridepublic void actionPerformed(ActionEvent e) {String value = text.getText();if(value.indexOf(".")>-1) { //.24} else {text.setText(text.getText()+".");}}}/*** 操作符监听器* @author Administrator**/private class OperatorListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {//得到点击哪个按钮JButton button = (JButton)e.getSource();//得到按钮的值String value = button.getText();if(operator==null) { //第一次点击操作符operator = value;value1 = Double.parseDouble(text.getText()); //得到第一个操作数} else { //第二次点击操作符double value2 = Double.parseDouble(text.getText());//得到第二个操作数//两个操作数运算double result = 0;if("+".equals(operator)) {result = value1+value2;} else if("-".equals(operator)) {result = value1-value2;} else if("*".equals(operator)) {result = value1*value2;} else if("/".equals(operator) ) {if(value2==0) {text.setText("除数不能为0");} else {System.out.println("else");result = value1/value2;}} else {//操作符是等号operator = null;result = value2;}text.setText(result+"");//设置结果为操作数1value1 = result;//设置操作符为当前操作符operator = value;}//表明点击了操作符isOperator = true;}}/*** 清空按钮* @author Administrator**/private class ClearListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {//表示没有点击操作符isOperator = false;//操作符为空operator = null;//文本框内容为0text.setText(0+"");//第一个操作数为0value1 = 0;}}/*** 初始化组件*/private void init() {//frame:默认是BorderLayoutJFrame frame = new JFrame("20171106计算器demo");frame.setSize(800,600);//文本框text = new JTextField("0");text.setColumns(20);//清空按钮JButton clearButton = new JButton("清空");clearButton.setForeground(Color.RED);clearButton.addActionListener(new ClearListener());JPanel northPanel = new JPanel();northPanel.add(text);northPanel.add(clearButton);frame.add(northPanel,BorderLayout.NORTH);//中间面板JPanel centerPanel = new JPanel();GridLayout grid = new GridLayout(4,4,5,5);//设置中间面板的布局是:表格布局centerPanel.setLayout(grid);//centerPanel.setBackground(Color.YELLOW);JButton button7 = new JButton("7");button7.setForeground(Color.BLUE);//增加监听器匿名内部类button7.addActionListener(new NumberListener());centerPanel.add(button7);JButton button8 = new JButton("8");button8.setForeground(Color.BLUE);//增加监听器button8.addActionListener(new NumberListener());centerPanel.add(button8);JButton button9 = new JButton("9");button9.setForeground(Color.BLUE);button9.addActionListener(new NumberListener());centerPanel.add(button9);JButton buttonDivid = new JButton("/"); buttonDivid.setForeground(Color.red);buttonDivid.addActionListener(new OperatorListener()); centerPanel.add(buttonDivid);//一行okJButton button4 = new JButton("4");button4.setForeground(Color.BLUE);button4.addActionListener(new NumberListener()); centerPanel.add(button4);JButton button5 = new JButton("5");button5.setForeground(Color.BLUE);button5.addActionListener(new NumberListener()); centerPanel.add(button5);JButton button6 = new JButton("6");button6.setForeground(Color.BLUE);button6.addActionListener(new NumberListener()); centerPanel.add(button6);JButton buttonMul = new JButton("*");buttonMul.setForeground(Color.red);buttonMul.addActionListener(new OperatorListener()); centerPanel.add(buttonMul);//二行okJButton button1 = new JButton("1");button1.setForeground(Color.BLUE);button1.addActionListener(new NumberListener()); centerPanel.add(button1);JButton button2 = new JButton("2");button2.setForeground(Color.BLUE);button2.addActionListener(new NumberListener()); centerPanel.add(button2);JButton button3 = new JButton("3");button3.setForeground(Color.BLUE);button3.addActionListener(new NumberListener()); centerPanel.add(button3);JButton buttonMinus = new JButton("-"); buttonMinus.setForeground(Color.red);buttonMinus.addActionListener(new OperatorListener());centerPanel.add(buttonMinus);//三行okJButton button0 = new JButton("0");button0.setForeground(Color.BLUE);button0.addActionListener(new NumberListener());centerPanel.add(button0);JButton button = new JButton(".");button.setForeground(Color.BLUE);button.addActionListener(new PointListener());centerPanel.add(button);JButton buttonEquals = new JButton("=");buttonEquals.setForeground(Color.red);buttonEquals.addActionListener(new OperatorListener());centerPanel.add(buttonEquals);JButton buttonAdd = new JButton("+");buttonAdd.setForeground(Color.RED);buttonAdd.addActionListener(new OperatorListener());centerPanel.add(buttonAdd);//四行okJPanel outPanel = new JPanel();outPanel.add(centerPanel);frame.add(outPanel,BorderLayout.CENTER);//outPanel.setBackground(Color.blue);//窗体紧凑显示frame.pack();//设置窗体可见frame.setVisible(true);}}package com.weixin;import java.math.BigDecimal;public class Test {public static void main(String[] args) {CalculatorDouble cal = new CalculatorDouble();}}三实验内容中遇到的问题、解决方法和体会。

第四章 Java章节习题

第四章   Java章节习题

1.分别编写两个方法,一个方法的功能是求一个double型数值的向右取整,另一个方法求double型数值的向左取整。

数d的向右取整是大于等于d的最小整数,d的向左取整是小于等于d的最大整数。

例如:5.3的向右取整是6而向左取整是5.答:public class One{static int right(double x){if(x!=5)x=x+1;return (int)x;}static int left(double x){return (int)x;}public static void main(String args[]){System.out.println("5.3向左取整为:"+left(5.3));System.out.println("5.3向右取整为:"+right(5.3));}}程序运行结果为:2.写一个方法计算一个整数各位数字的和。

使用下述的方法说明:public static int sumDigits(long n)例如:sumDigits(276)返回2+7+6=15 。

提示:用求余运算符%分解数字,用除号/分离位数。

例如334%10=4而334/10=33.用循环反复分解和分离每位数字,直到所有的位数都被分解。

答:public class Two{public static int sumDigits(long n){long sum=0,t;while(n!=0)47{t=n%10;n=n/10;sum+=t;}return (int)sum;}public static void main(String args[]){System.out.println("334各个位数字之和为:"+sumDigits(334));}}程序运行结果为:3. 编写程序,用Math类中的sqrt方法打印下表:Number SquareRoot ....................................0 0.00002 1.41424 2.00006 2.44958 2.828410 3.162312 3.464114 3.741716 4.000018 4.242620 4.4721答:public class Three{public static void main(String args[]){System.out.println("Number SquareRoot");System.out.println("..................");for(int i=0;i<=20;)4748{System.out.printf("%d\t%.4f\n",i,Math.sqrt(i));i=i+2;}}}程序运行结果为:4. 请定义一个名为Rectangle的矩形类。

§4.1 图形用户界面和Swing常用组件


§4.1 图形用户界面和Swing常用组件
内容提要 :
图形用户界面(Graphics User Interface,简称GUI)画面生动、操作简单, 省去了字符界面用户必须记忆各种命令的麻烦,所以深受广大用户喜爱 和欢迎。在Java中,可以使用AWT技术与Swing技术进行图形用户界面 开发。本小节的主要内容包括:
下图对JComponent分支做了细化,描述了JComponent层 次下的用户界面处理组件和用户界面容器组件。
Component Container JComponent
JComboBox JLabel
JTextComponent JPopupMenu AbstractButton JPanel JList
(2) Javax.swing. JPasswordField类的常用方法有: JPasswordField (String text) JPasswordField (String text, int columns) void setEchoChar(char c)
(3) Javax.swing. JTextArea类的常用方法有: JTextArea(String text) JTextArea(String text, int rows, int columns) void setLineWrap(boolean wrap)
JTextField和JPasswordField提供一个处理单行文 本的区域,用户可以通过键盘在该区域中输入 文本,或者程序将运行结果显示在该区域中。 JPasswordField是JTextField的子类,主要用于用 户密码的输入,因此它会隐藏用户实际输入的 字符。与JTextField(包括JPasswordField)只能处 理单行文本不同,JTextArea可以处理多行文本。

javajava图形用户界面与事件处理.ppt

——1、容器(Container)
Container类的功能:
Container类是由Component类派生出来的一种 特殊类,用来表示各种GUI组件的容器,其主要功能 包括: 组件的管理:方法add()可以向其中添加一个组 件,remove()删除其中的一个组件。 布局管理:每个Container类都和一个布局管理 器相联,以确定其中组件的布局。 Container类可 以通过setLayout()方法设置某种布局方式。 常见的Container类有:Frame, Panel, Applet等。
03:5
AppletWindow.java
第16页
二、 AWT中的常用组件及用法
标签(Label)
静态文字,多用于指示信息,无事件。
单行文本框(TextField)
只能显示一行信息,会产生多种事件。
按钮(Button)
可点击的用户界面组件,当组件被点击是,产生 AcitonEvent事件。
Window类还有两个子类:
定义对话框,用Dialog子类。 定义一般意义的窗口,用Frame类。
Frame可以用其构造方法Fame(String)来生成, 其标题由String参数指定。一个Frame刚被创建后, 其初始大小为(0,0),而且是不可见的,所以为 了使Frame显示出来,必须在程序中显式地设置一 下它的大小。
03:35
第18页
二、 AWT中的常用组件及用法
列表(List)
列表提供了很多文本选项,可以同时看到多项, 也有滚动条的支持,并且可以单选或多选。当用户 单选或多选时,会产生ItemEvent事件。 下拉式菜单(Choice)
在下拉式菜单中有多个选项,但每次只能选择一项。当 选择发生时,会产生ItemEvent事件。

图形用户界面


24
BorderLayout
• 注意: – JFrame的内容窗格的默认布局管理器是 BorderLayout – 如果某个区域内没有添加组件,这个区域将 被邻近区域占用
25
练习
• 编写一个程序,显示一个400×300像素的框架, 框架内容窗格的布局为BorderLayout布局, 并将两个按钮“Button1”和“Button2”添加 到东区和西区。
• 处理流程:
– 用户操作界面组件;鼠标点击等 – 该组件(事件源)产生某种信号(事件) – 事先注册给这个组件(事件源)的一个监听器会接收到这 个信号(事件),并进行处理
30
需要弄清楚的问题
• 事件源与事件的关系
– 什么是事件?什么是事件源? – 有哪些事件源?他们在什么情况下会产生什么样的事件?
4
• The java GUI is platformindependent, (how?)
– JVM maps the facilities provided by the AWT onto the facilities provided by the particular OS on which the program is running
– 为容器设置布局管理器的方法,其中LayoutManager是所 有布局管理器的父类
17
构造图形界面的基本思路
• 先使用容器类构造一个合适的容器; • 使用容器的setLayout方法为容器设置一个合 适的布局管理器。 • 通过容器的add方法在容器中添加组件(控制 组件、其他容器组件)。
18
练习
20
FlowLayout
• FlowLayout是最简单的布局管理器。它按添 加组件的顺序由左到右将组件排列在容器中, 一行排满后再排新的一行。 • 示例:TestFlowLayout.java • 构造方法:

java图形练习题

java图形练习题1. 题目描述请编写一个Java程序,实现以下图形练习题要求。

2. 正文在Java中,我们可以使用图形库来实现各种图形的绘制。

这样的练习可以帮助我们熟悉图形相关的API,并加深对Java编程语言的理解。

首先,我们来实现一个简单的正方形。

在Java的图形库中,我们可以通过创建一个正方形实例,并设置其位置、边长、颜色等属性来绘制一个正方形。

```javaimport java.awt.Color;import java.awt.Graphics;public class Square {private int x;private int y;private int size;private Color color;public Square(int x, int y, int size, Color color) {this.x = x;this.y = y;this.size = size;this.color = color;}public void draw(Graphics g) {g.setColor(color);g.fillRect(x, y, size, size);}}```接下来,我们使用上述Square类来绘制一个正方形。

```javaimport javax.swing.JFrame;import java.awt.Color;import java.awt.Graphics;public class SquareExample extends JFrame {private Square square;public SquareExample() {square = new Square(100, 100, 200, Color.RED);setSize(400, 400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}@Overridepublic void paint(Graphics g) {super.paint(g);square.draw(g);}public static void main(String[] args) {new SquareExample();}}```通过运行上述程序,我们可以在窗口中看到一个红色的正方形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4 图形用户界面 4.1 单项选择题 1. 如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是( ) A、p.add(b); B、p.add(b,"NORth"); C、p.add(b,"South"); D、b.add(p,"North");

2.JPanel的默认布局管理器是( )。 A.FlowLayout B.CardLayout C.BorderLayout D.GridLayout

3.容器类java.awt.container的父类是( )。 A.java.awt.Frame B.java.awt.Panel C.java.awt.Componet D.java.awt.Windows

4.哪一个布局管理器使用的是组件的最佳尺寸?( ) A.FlowLayout B.BorderLayout C.GridLayout D.CardLayout

5.关于AWT和Swing说法正确的是( )。 A.Swing是AWT的子类 B.AWT在不同操作系统中显示相同的风格 C.AWT不支持事件模型 D.Swing在不同的操作系统中显示相同的风格

6.关于使用Swing的基本规则,下列说法正确的是( )。 A.Swing组件可直接添加到顶级容器中 B.要尽量使用非Swing的重要级组件 C.Swing的JButton不能直接放到JFrame上 D.以上说法都对

7.在Java编程中,Swing包中的组件处理事件时,下面( )是正确的。 A.Swing包中的组件也是采用事件的委托处理模型来处理事件的 B.Swing包中的组件产生的事件类型,也都带有一个J字母,如JMouseEvent C.Swing包中的组件也可以采用事件的传递处理机制 D.Swing包中的组件所对应的事件适配器也是带有J字母的,如JMouseAdapter

8.能将容器划分为"East"、 "South"、"West"、"North"、"Center"五个区域的布局管理器是( ) A)BorderLayout B)FlowLayout C)GridLayout D)CardLayout

9. 如果有一个对象 myListener ( 其中 myListener 对象实现了 ActionListener 接口 ), 下列哪条语句使得 myListener 对象能够接受处理来自于 smallButton 按钮对象的动作事件 ? A. smallButton.add(myListener); B. smallButton.addListener(myListener); C. smallButton.addActionListener(myListener); D. smallButton.addItem(myListener);

10. 下列各种布局管理器中Window类、JDialog类和JFrame类的默认布局是 ( )

A.FlowLayout B.CardLayout C.BorderLayout D.GridLayout

11. JFrame对象默认的布局管理器是( ) A、FlowLayout B、BorderLayout C、CardLayout D、null 12. 在下列各种容器中,最简单的无边框的又不能移动和缩放的只能包含在另一种容器中的容器是 ( ) A.Window B.JDialog C.JFrame D.JPanel

13 下列关于组件类的描述中,错误的是( ) A.组件类中包含了文本组件类(TextComponent)和菜单组件类(MenuComponent) B.标签(JLabel)和按钮(JButton)是组件类(Component)的子类 C.面板(JPanel)和窗口(Window)是容器类(Container)的子类 D.文本框(JTextField)和文本区(JTextArea)是文本组件类(JTextComponent)的子类

14 在对下列语句的解释中,错误的是 ( ) but.addActionListener(this); A. but是某种事件对象,如按钮事件对象 B. this表示当前容器 C. ActionListener是动作事件的监听者 D. 该语句的功能是将but对象注册为this对象的监听者

15. 下列关于菜单和对话框的描述中,错误的是 ( ) A.JFrame容器是可以容纳菜单组件的容器 B.菜单条中可包含若干个菜单,菜单中又可包含若干菜单项,菜单项中还可包含菜单子项 C.对话框内不可以含有菜单条 D.对话框与JFrame一样都可作为程序的底层容器

16. 所有GUI标准组件类的父类是 ( ) A.JButtom B.List C.Component D.Container

17. 4.2 填空题 1. 在需要自定义Swing构件的时候,首先要确定使用那种构件类作为所定制构件的______,一般继承Jpanel类或更具体的Swing类. 2. Swing的事件处理机制包括__________、事件和事件处理者。 3. Java事件处理包括建立事件源、_______和将事件源注册到监听器。 4. Java的图形界面技术经历了两个发展阶段,分别通过提供AWT开发包和_______开发包来实现。 5. 抽象窗口工具包________提供用于所有Java applets及应用程序中的基本GUI 组件。 6. Window有两种形式:Frame( 框架)和_____. 7. 容器里的组件的位置和大小是由_____________决定的 。 8. 可以使用setLocation(),setSize()或____________中的任何一中方法设定组件的大小或位置。 9. 容器Java.awt.Container是_____________类的子类。 10. 框架的缺省布局管理器是_________。 11. ______________包括五个明显的区域:东、南、西、北、中。 12. _____________布局管理器是容器中各个构件呈网格布局,平均占据容器空间 13. _____________组件提供了一个简单的“从列表中选取一个”类型的输入。 14. 在组件中显示时所使用的字体可以用____________方法来设置。 15. 为了保证平台独立性,Swing是用________编写。 16. Swing 采用了一种MVC的设计范试,即___________. 17. Swing GUI使用两种类型的类,即GUI类和__________支持类。 18. ________由一个玻璃面板、一个内容面板和一个可选择的菜单条组成。 19. 对Swing构件可以设置_______边框。 20. ___________对话框在被关闭前将阻塞包括框架在内的其他所有应用程序的输入。

4.3 判断题 1. 容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( × ) 2. 一个容器中可以混合使用多种布局策略。( × ) 3. 在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。( √ ) 4. 使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。( √ ) 5. 在使用BorderLayout时,最多可以放入五个组件。( √ ) 6. 每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( × ) 4.4 程序阅读题 1、阅读下面的程序,回答问题。 import java.awt.*; import javax.swing.*; public class T extends JFrame { public T ( ) { super("GridLayout"); Container con=this.getContentPane(); con.setLayout(new GridLayout(2,3)); con.add(new JButton("a")); con.add(new JButton("b")); con.add(new JButton("c")); con.add(new JButton("d")); con.add(new JButton("e")); con.add(new JButton("f")); setSize(200, 80); setVisible(true); } public static void main(String args[]) { new T(); } } 1)画图表示程序运行后的图形界面。 2)如果程序通过实现某个接口处理按钮的动作事件,则该接口名为何?接口中的方法头声明如何?

4.5 参考答案 4.5.1 单项选择题: 1.C 2.A 3.C 4.A 5.D 6.D 7.A 8.A 9.C 10.C 11.B 12.D 13.A 14.C 15.C 16.C

4.5.2 填空题 1. 父类 2. 事件源 3. 建立事件监听器 4. Swing 5. AWT(Abstract Window Toolkit) 6. Dialog(对话框) 7. 布局管理器 8. setBounds() 9. Component 10. BorderLayout 11. Border布局管理器 12. GridLayout 13. 下拉列表 14. setFont() 15. java 16. “模型—视图—控制” 17. 非GUI 18. 根面板 19. 一个或多个 20. 有模式

4.5.3 判断题 1. × 2. × 3.√ 4.√ 5. √ 6. ×

4.5.4 程序阅读题 1. 1)

2)接口名为:ionListener 接口中的方法:public void actionPerformed(ActionEvent e)

相关文档
最新文档