张季跃 201771010139《面向对象程序设计(java)》第十四周学习总结

张季跃 201771010139《面向对象程序设计(java)》第十四周学习总结

第二部分:实验部分

1、实验目的与要求

(1) 掌握GUI布局管理器用法;

(2) 掌握各类Java Swing组件用途及常用API;

实验1: 导入第12章示例程序,测试程序并进行组内讨论。

测试程序1

elipse IDE中运行教材479页程序12-1,结合运行结果理解程序;

掌握各种布局管理器的用法;

理解GUI界面中事件处理技术的用途。

在布局管理应用代码处添加注释;

测试结果:

 

测试程序2

elipse IDE中调试运行教材486页程序12-2,结合运行结果理解程序;

掌握各种文本组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

测试程序3

elipse IDE中调试运行教材489页程序12-3,结合运行结果理解程序;

掌握复选框组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

测试程序4

elipse IDE中调试运行教材491页程序12-4,运行结果理解程序;

掌握单选按钮组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

 

测试程序5

elipse IDE中调试运行教材494页程序12-5,结合运行结果理解程序;

掌握边框的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

测试程序6

elipse IDE中调试运行教材498页程序12-6,结合运行结果理解程序;

掌握组合框组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

测试程序7

elipse IDE中调试运行教材501页程序12-7,结合运行结果理解程序;

掌握滑动条组件的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

测试程序8

elipse IDE中调试运行教材512页程序12-8,结合运行结果理解程序;

掌握菜单的创建、菜单事件监听器、复选框和单选按钮菜单项、弹出菜单以及快捷键和加速器的用法。

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

测试程序9

elipse IDE中调试运行教材517页程序12-9,结合运行结果理解程序;

掌握工具栏和工具提示的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

测试程序10

elipse IDE中调试运行教材524页程序12-1012-11,结合运行结果理解程序,了解GridbagLayout的用法。

elipse IDE中调试运行教材533页程序12-12,结合程序运行结果理解程序,了解GroupLayout的用法。

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

测试程序11

elipse IDE中调试运行教材539页程序12-1312-14,结合运行结果理解程序;

掌握定制布局管理器的用法。

记录示例代码阅读理解中存在的问题与疑惑。

测试结果

测试程序12

elipse IDE中调试运行教材544页程序12-1512-16,结合运行结果理解程序;

掌握选项对话框的用法。

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

测试程序13

elipse IDE中调试运行教材552页程序12-1712-18,结合运行结果理解程序;

掌握对话框的创建方法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

测试程序14

elipse IDE中调试运行教材556页程序12-1912-20,结合运行结果理解程序;

掌握对话框的数据交换用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

测试程序15

elipse IDE中调试运行教材556页程序12-21、12-2212-23,结合程序运行结果理解程序;

掌握文件对话框的用法;

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

测试程序16

elipse IDE中调试运行教材570页程序12-24,结合运行结果理解程序;

了解颜色选择器的用法。

记录示例代码阅读理解中存在的问题与疑惑。

测试结果:

 

 

实验2组内讨论反思本组负责程序,理解程序总体结构,梳理程序GUI设计中应用的相关组件,整理相关组件的API,对程序中组件应用的相关代码添加注释。

实验

本组负责的是第十二个实验,即optionDialog(选项对话框),该测试程序中GUI设计中应用的相关组件有:

  LayoutManager: 布局接口,各种布局类均为其子类

  frame.setLayout(布局对象) //设置窗口布局

  null:不使用布局,此时可以容器内的组件可以调用方法,通过坐标以及尺寸进行组件定位:

  组件定位方法为void setBounds(int x轴,int y轴,int 宽度,int 高度)

Jframe:创建该组件即创建了一个窗口。窗口是一个容器组件,所有内容均可以放入其中。

JPanel:创建一个可加入到JFrame窗口的容器。

JButtton:创建一个按钮。

JRadioButton:实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。与 ButtonGroup 对象配合使用可创建一组按钮,一次只能选择其中的一个按钮。

JLabel用于短文本字符串或图像或二者的显示区。

实验代码:

package optionDialog;

import javax.swing.*;

/**

* A panel with radio buttons inside a titled border.

*/

public class ButtonPanel extends JPanel

//创建一个可加入到JFrame窗体的容器//

{

private ButtonGroup group;

/**

* Constructs a button panel.

* @param title the title shown in the border

* @param options an array of radio button labels

*/

public ButtonPanel(String title, String... options)

{

setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), title));

setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

group = new ButtonGroup();

//加入到ButtonGroup中的JRdioButton只有一个可以被选中,而每个JRadioButton独享一个监听器,当其被选中时执行监听器中处理方法。//

// make one radio button for each option

for (String option : options)

{

JRadioButton b = new JRadioButton(option);

//实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。与 ButtonGroup 对象配合使用可创建一组按钮,一次只能选择其中的一个按钮。//

b.setActionCommand(option);

add(b);

group.add(b);

b.setSelected(option == options[0]);

}

}

/**

* Gets the currently selected option.

* @return the label of the currently selected radio button.

*/

public String getSelection()

{

return group.getSelection().getActionCommand();

}

}

package optionDialog;

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import java.util.*;

import javax.swing.*;

/**

* A frame that contains settings for selecting various option dialogs.

*/

public class OptionDialogFrame extends JFrame

//Jframe是窗体组件。创建该组件即创建了一个窗口//

{

private ButtonPanel typePanel;

private ButtonPanel messagePanel;

private ButtonPanel messageTypePanel;

private ButtonPanel optionTypePanel;

private ButtonPanel optionsPanel;

private ButtonPanel inputPanel;

private String messageString = "Message";

private Icon messageIcon = new ImageIcon("blue-ball.gif");

private Object messageObject = new Date();

private Component messageComponent = new SampleComponent();

public OptionDialogFrame()

{

JPanel gridPanel = new JPanel();

//创建一个可加入到JFrame窗体的容器//

gridPanel.setLayout(new GridLayout(2, 3));

//设置窗口布局//

typePanel = new ButtonPanel("Type", "Message", "Confirm", "Option", "Input");

messageTypePanel = new ButtonPanel("Message Type", "ERROR_MESSAGE", "INFORMATION_MESSAGE",

"WARNING_MESSAGE", "QUESTION_MESSAGE", "PLAIN_MESSAGE");

messagePanel = new ButtonPanel("Message", "String", "Icon", "Component", "Other",

"Object[]");

optionTypePanel = new ButtonPanel("Confirm", "DEFAULT_OPTION", "YES_NO_OPTION",

"YES_NO_CANCEL_OPTION", "OK_CANCEL_OPTION");

optionsPanel = new ButtonPanel("Option", "String[]", "Icon[]", "Object[]");

inputPanel = new ButtonPanel("Input", "Text field", "Combo box");

gridPanel.add(typePanel);

gridPanel.add(messageTypePanel);

gridPanel.add(messagePanel);

gridPanel.add(optionTypePanel);

gridPanel.add(optionsPanel);

gridPanel.add(inputPanel);

// add a panel with a Show button

JPanel showPanel = new JPanel();

//创建一个可加入到JFrame窗体的容器//

JButton showButton = new JButton("Show");

// 创建一个显示为“show”的按钮”//

showButton.addActionListener(new ShowAction());

showPanel.add(showButton);

add(gridPanel, BorderLayout.CENTER);

add(showPanel, BorderLayout.SOUTH);

pack();

}

/**

* Gets the currently selected message.

* @return a string, icon, component, or object array, depending on the Message panel selection

*/

public Object getMessage()

{

String s = messagePanel.getSelection();

if (s.equals("String")) return messageString;

else if (s.equals("Icon")) return messageIcon;

else if (s.equals("Component")) return messageComponent;

else if (s.equals("Object[]")) return new Object[] { messageString, messageIcon,

messageComponent, messageObject };

else if (s.equals("Other")) return messageObject;

else return null;

}

/**

* Gets the currently selected options.

* @return an array of strings, icons, or objects, depending on the Option panel selection

*/

public Object[] getOptions()

{

String s = optionsPanel.getSelection();

if (s.equals("String[]")) return new String[] { "Yellow", "Blue", "Red" };

else if (s.equals("Icon[]")) return new Icon[] { new ImageIcon("yellow-ball.gif"),

new ImageIcon("blue-ball.gif"), new ImageIcon("red-ball.gif") };

else if (s.equals("Object[]")) return new Object[] { messageString, messageIcon,

messageComponent, messageObject };

else return null;

}

/**

* Gets the selected message or option type

* @param panel the Message Type or Confirm panel

* @return the selected XXX_MESSAGE or XXX_OPTION constant from the JOptionPane class

*/

public int getType(ButtonPanel panel)

{

String s = panel.getSelection();

try

{

return JOptionPane.class.getField(s).getInt(null);

}

catch (Exception e)

{

return -1;

}

}

/**

* The action listener for the Show button shows a Confirm, Input, Message, or Option dialog

* depending on the Type panel selection.

*/

private class ShowAction implements ActionListener

{

public void actionPerformed(ActionEvent event)

{

if (typePanel.getSelection().equals("Confirm")) JOptionPane.showConfirmDialog(

OptionDialogFrame.this, getMessage(), "Title", getType(optionTypePanel),

getType(messageTypePanel));

else if (typePanel.getSelection().equals("Input"))

{

if (inputPanel.getSelection().equals("Text field")) JOptionPane.showInputDialog(

OptionDialogFrame.this, getMessage(), "Title", getType(messageTypePanel));

else JOptionPane.showInputDialog(OptionDialogFrame.this, getMessage(), "Title",

getType(messageTypePanel), null, new String[] { "Yellow", "Blue", "Red" },

"Blue");

}

else if (typePanel.getSelection().equals("Message")) JOptionPane.showMessageDialog(

OptionDialogFrame.this, getMessage(), "Title", getType(messageTypePanel));

else if (typePanel.getSelection().equals("Option")) JOptionPane.showOptionDialog(

OptionDialogFrame.this, getMessage(), "Title", getType(optionTypePanel),

getType(messageTypePanel), null, getOptions(), getOptions()[0]);

}

}

}

/**

* A component with a painted surface

*/

class SampleComponent extends JComponent

{

public void paintComponent(Graphics g)

{

Graphics2D g2 = (Graphics2D) g;

Rectangle2D rect = new Rectangle2D.Double(0, 0, getWidth() - 1, getHeight() - 1);

g2.setPaint(Color.YELLOW);

g2.fill(rect);

g2.setPaint(Color.BLUE);

g2.draw(rect);

}

public Dimension getPreferredSize()

{

return new Dimension(10, 10);

}

}

package optionDialog;

import java.awt.*;

import javax.swing.*;

/**

* @version 1.34 2015-06-12

* @author Cay Horstmann

*/

public class OptionDialogTest

{

public static void main(String[] args)

{

EventQueue.invokeLater(() -> {

JFrame frame = new OptionDialogFrame();

frame.setTitle("OptionDialogTest");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

});

}

}

实验3:组间协同学习:在本班课程QQ群内,各位同学对实验1中存在的问题进行提问,提问时注明实验1中的测试程序编号,负责对应程序的小组需及时对群内提问进行回答。

 

第三部分:实验总结:

在这一周的学习过程中,我了解了Swing用户界面组件,GUI相关组件。但总体而言,我对这一周学习的知识掌握的并不全面,就算是自己负责的实验部分,也有许多是在网络上查找相关资料后才相对掌握了一些,即使如此,对于实验内容我了解的依然不够全面。而对于这一周的小组协作学习,我认为这对于我们的学习的确有一定的帮助,至少对于每个负责的部分我们都有互相讨论的人选。

原文地址:https://www.cnblogs.com/Alex-Morcer/p/10053652.html

时间: 2024-08-07 09:53:49

张季跃 201771010139《面向对象程序设计(java)》第十四周学习总结的相关文章

张季跃201771010139《面向对象程序设计(java)》第一周学习总结(改)

张季跃201771010139<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com Tonma 程序设计评测:https://pintia.cn/ [email protected] 代码托管平台:https://github.com/ [email protected] 中国大学MOOC:https://www.icourse163.org/ 1987400371 以下回答是或否 是否

张季跃 201771010139《面向对象程序设计(java)》第三周学习总结(改)

张季跃 201771010139<面向对象程序设计(java)>第三周学习总结 第一部分:理论知识学习部分 3.6字符串 u(1)Java字符串是Unicode字符的序列,它是组织字符的基 本数据结构,用法类似于字符数组. u (2)有内置的字符串类型,而是在标准Java类库中提供了一 个Java预定义类String.在Java中,字符串被当作对象 来处理. u      (3)程序中需要用到的字符串可以分为两大类: –创建之后不会再做修改和变动的不可变字符串String类: –创建之后允许再

张季跃&#160;201771010139《面向对象程序设计(java)》第八周学习总结

张季跃 201771010139<面向对象程序设计(java)>第八周学习总结 理论知识部分: 6.1 接口 l(1)Java为了克服单继承的缺点,Java使用了接口, 一个类可以实现一个或多个接口. l (2) 在Java程序设计语言中,接口不是类,而是对类 的一组需求描述,由常量和一组抽象方法组成. l (3) 接口中不包括变量和有具体实现的方法. l (4) 只要类实现了接口,则该类要遵从接口描述的统 一格式进行定义,并且可以在任何需要该接口的 地方使用这个类的对象. 6.2 接口示例

张季跃 201771010139《面向对象程序设计(java)》第十二周学习总结

张季跃 201771010139<面向对象程序设计(java)>第十二周学习总结 第二部分:实验部分 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的API: (3) 了解Java GUI中2D图形中字体与颜色的设置方法: (4) 了解Java GUI中2D图像的载入方法. 2.实验内容和步骤 实验1: 导入第9章示例程序,测试程序并进行代码注释. 2.实验内容和步骤 实验1: 导入第10章示例程序,测试

张季跃 201771010139《面向对象程序设计(java)》第十五周学习总结

张季跃 201771010139<面向对象程序设计(java)>第十五周学习总结 第一部分:理论知识学习部分 第13章 部署应用程序: JAR文件: Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包为.jar文件后,GUI界面 程序就可以直接双击图标运行. .jar文件(Java归档)既可以包含类文件,也可 以包含诸如图像和声音这些其它类型的文件. JAR文件是压缩的,它使用ZIP压缩格式. 清单文件 (1) 每个JAR文件中包含一个用于描述归档特征的清单文 件(mani

张季跃 201771010139《面向对象程序设计(java)》第十六周学习总结

张季跃 201771010139<面向对象程序设计(java)>第十六周学习总结 1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 2.实验内容和步骤 实验1:测试程序并进行代码注释. 测试程序1: l 在elipse IDE中调试运行ThreadTest,结合程序运行结果理解程序: l 掌握线程概念: l 掌握用Thread的扩展类实现线程的方法: l 利用Runnable接口

20182328 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结

20182328 2019-2020-1 <数据结构与面向对象程序设计>第十周学习总结 教材学习内容总结 图的概念 图由顶点和边组成. 邻接的(adjacent):图中的两个顶点之间有一条连通边. 邻居:邻接顶点. 自循环(环):连通一个顶点及其自身的边. 路径:由一个顶点到达另一个顶点. 路径长度:路径边的条数(顶点数 - 1). 环路:一种首顶点和末顶点相同且没有重边的路径.没有环路则是无环的(acyclic). 图的种类 无向图:是一种边为无序结点对的图. 完全的:无向图拥有最大数目的连

学号20182317 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结

学号20182317 2019-2020-1 <数据结构与面向对象程序设计>第十周学习总结 教材学习内容总结 三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找) 图 基本概念: 1.顶点(vertex) 表示某个事物或对象.由于图的术语没有标准化,因此,称顶点为点.节点.结点.端点等都是可以的. 2.边(edge) 通俗点理解就是两个点相连组合成一条边,表示事物与事物之间的关系.需要注意的是边表示的是顶点之间的逻辑关系,粗细长短都无所谓的.包括上面的顶点也一样,表示逻辑事物或对象,画的

汪慧和201771010123《面向对象程序设计JAVA》第四周实验总结

第一部分:理论知识学习部分 1.类 类(class)是具有相同属性和行为的一组对象的集合,是构造程序的基本单元,是构造对象的模板或蓝图. 2.对象 对象:即数据,对象有三个特性--1.行为 2.状态 3.标识. 3.类与对象的关系 (1)类是对象,事物的描述和抽象,是具有相同属性和行为的对象集合.对象则是该类事物的实例. (2)类是一个静态的概念,类本身不携带任何数据.当没有为类创建任何对象时,类本身不存在于内存空间中.对象是一个动态的概念.每一个对象都存在着有别于其它对象的属于自己的独特的属性