JAVA程序设计题解与上机指导 第四版 第8章 Java的图形用户界面设计 8.2 创建“My JFrame”

一、简介:编程实现创建并显示一个标题为“My Frame”,Frame背景为黑色,Panel背景为白色,其中,Panel中加入“打开”“关闭”“返回”三个按钮,并一行排开。

二、代码如下:

import java.awt.*;
import javax.swing.*;
import java.io.*;

public class ThreeButtonsFrameTest {
	public static void main(String args[])
	{
		JFrame frame =new JFrame("My Frame");//创建一个JFrame实例
		frame.setSize(400,500);//设置JFrame的大小
		frame.getContentPane().setBackground(Color.BLACK);//设置JFrame的背景色
		
		frame.setLayout(new FlowLayout(FlowLayout.CENTER,50,50));//设置JFrame的布局管理器为FlowLayout
		JPanel contentPane=new JPanel();//创建JPanel实例
		contentPane.setSize(100,100);//设置JPanel的大小
		//设置JPanel的布局管理器为FlowLayout
		contentPane.setLayout(new FlowLayout());
		contentPane.setBackground(Color.white);//设置JPanel的背景色
		
		JButton btn1,btn2,btn3;//定义按钮
		btn1=new JButton("打开");
		btn2=new JButton("关闭");
		btn3=new JButton("返回");
		contentPane.add(btn1);//将按钮添加到JPanel面板
		contentPane.add(btn2);//使用JPanel的布局管理器
		contentPane.add(btn3);

		//将面板JPanel添加到JFrame中,使用JFrame的布局管理器
		frame.add(contentPane);
		frame.setVisible(true);//显示Jframe
		
		BufferedReader intemp=new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Press return key to exit.");
		try
		{
			String s=intemp.readLine();//等待用户的输入以关闭窗口
		}catch(IOException e)
		{
			System.out.println("IOException");
		}
		System.exit(0);//强行退出并关闭
	}
}

三、运行结果:

四、梳理:

软件包:

1、java.awt.*:功能:包含用于创建用户界面和绘制图形图像的所有类。

类摘要

编辑
AlphaComposite
AlphaComposite 类实现一些基本的 alpha 合成规则,将源色与目标色组合,在图形和图像中实现混合和透明效果。
AWTEvent
所有 AWT 事件的根事件类。
AWTEventMulticaster
AWTEventMulticaster 实现对 java.awt.event 包中定义的 AWT 事件的指派,该指派是有效的、线程安全的多路广播事件指派。
AWTKeyStroke
AWTKeyStroke 表示键盘(或等效输入设备)上的键操作。
AWTPermission
此类用于 AWT 权限。
BasicStroke
BasicStroke 类定义针对图形图元轮廓呈现属性的一个基本集合,这些图元使用 Graphics2D对象呈现,而该对象的 Stroke 属性设置为此 BasicStroke。
这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。
BufferCapabilities
缓冲区的能力和属性。
BufferCapabilities.FlipContents
页面翻转后可能的后台缓冲区内容的一个类型安全的枚举
此类创建一个标签按钮。
Canvas
Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
CardLayout
CardLayout 对象是容器的布局管理器。
复选框是一个可处于“开”(true) 或“关”(false) 状态的图形组件。
CheckboxGroup
CheckboxGroup 类用于集合 Checkbox 按钮集。
CheckboxMenuItem
此类表示一个可包括在菜单中的复选框。
Choice
Choice 类表示一个弹出式选择菜单。
Color 类用于封装默认 sRGB 颜色空间中的颜色,或者用于封装由ColorSpace标识的任意颜色空间中的颜色。
component是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。
ComponentOrientation
ComponentOrientation 类封装语言敏感的方向,用于排序组件或文本内容。
一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件。
封装鼠标光标的位图表示形式的类。
DefaultKeyboardFocusManager
AWT 应用程序的默认 KeyboardFocusManager。
Desktop 类允许 Java 应用程序启动已在本机桌面上注册的关联应用程序,以处理URI或文件。
Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入。
Dimension 类封装单个对象中组件的宽度和高度(精确到整数)。
DisplayMode 类封装 GraphicsDevice 的位深、高度、宽度和刷新率。
Event
注:Event 类已废弃,只可用于向后兼容。
EventQueue
EventQueue 是一个与平台无关的类,它将来自于底层同位体类和受信任的应用程序类的事件列入队列。
FileDialog
FileDialog 类显示一个对话框窗口,用户可以从中选择文件。
流布局用于安排有向流中的组件,这非常类似于段落中的文本行。
FocusTraversalPolicy
FocusTraversalPolicy 定义一种顺序,按此顺序遍历具有特定焦点循环根的 Component。
Font 类表示字体,可以使用它以可见方式呈现文本。
FontMetrics
FontMetrics 类定义字体规格对象,该对象封装将在特定屏幕上呈现特定字体的有关信息。
Frame 是带有标题和边框的顶层窗口。
GradientPaint
GradientPaint 类提供了使用线性颜色渐变模式填充 Shape的方法。
Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。
此 Graphics2D 类扩展 Graphics类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。
GraphicsConfigTemplate
GraphicsConfigTemplate 类用于获得有效的GraphicsConfiguration。
GraphicsConfiguration
GraphicsConfiguration 类描述图形目标(如打印机或监视器)的特征。
GraphicsDevice
GraphicsDevice 类描述可以在特定图形环境中使用的图形设备。
GraphicsEnvironment
GraphicsEnvironment 类描述了 Java(tm) 应用程序在特定平台上可用的GraphicsDevice对象和 Font对象的集合。
GridBagConstraints
GridBagConstraints 类指定使用 GridBagLayout 类布置的组件的约束。
GridBagLayout
GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。
GridBagLayoutInfo
GridBagLayoutInfo 是 GridBagLayout 布局管理器的一个实用工具类。
GridLayout 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。
抽象类 Image 是表示图形图像的所有类的超类。
ImageCapabilities
图像的功能和属性。
Insets
Insets 对象是容器边界的表示形式。
JobAttributes
控制打印作业的属性集合。
JobAttributes.DefaultSelectionType
可能的默认选择状态的类型安全的枚举。
JobAttributes.DestinationType
可能的作业目标的类型安全枚举。
JobAttributes.DialogType
显示给用户的可能对话框的类型安全枚举。
JobAttributes.MultipleDocumentHandlingType
可能的多副本处理状态的类型安全枚举。
JobAttributes.SidesType
可能的多页整版的类型安全枚举。
KeyboardFocusManager
KeyboardFocusManager 负责管理激活状态的聚焦 Window 和当前焦点所有者。
Label 对象是一个可在容器中放置文本的组件。
LinearGradientPaint
LinearGradientPaint 类提供利用线性颜色渐变模式填充 Shape的方式。
List 组件为用户提供了一个可滚动的文本项列表。
MediaTracker
MediaTracker 类是一个跟踪多种媒体对象状态的实用工具类。
Menu 对象是从菜单栏部署的下拉式菜单组件。
MenuBar
MenuBar 类封装绑定到框架的菜单栏的平台概念。
MenuComponent
抽象类 MenuComponent 是所有与菜单相关的组件的超类。
MenuItem
菜单中的所有项必须属于类 MenuItem 或其子类之一。
MenuShortcut
表示 MenuItem 键盘加速器的 MenuShortcut 类。
MouseInfo
MouseInfo 提供获取有关鼠标信息的方法,如鼠标指针位置和鼠标按钮数。
MultipleGradientPaint
这是 Paints 的超类,它使用多个颜色渐变来填充它们的光栅。
PageAttributes
用来控制打印页面输出的属性集。
PageAttributes.ColorType
可能颜色状态的类型安全的枚举。
PageAttributes.MediaType
可能的纸张大小的类型安全的枚举。
PageAttributes.OrientationRequestedType
可能打印方向的类型安全的枚举。
PageAttributes.OriginType
可能原点的类型安全的枚举。
PageAttributes.PrintQualityType
可能的打印质量的类型安全的枚举。
Panel 是最简单的容器类。
Point
表示 (x,y) 坐标空间中的位置的点,以整数精度指定。
PointerInfo
描述指针位置的类。
Polygon 类封装了坐标空间中封闭的二维区域的描述。
PopupMenu
此类实现能够在组件中的指定位置上动态弹出的菜单。
PrintJob
启动并执行打印作业的抽象类。
RadialGradientPaint
RadialGradientPaint 类提供使用圆形辐射颜色渐变模式填充某一形状的方式。
Rectangle 指定坐标空间中的一个区域,通过坐标空间中 Rectangle 对象左上方的点 (x,y)、宽度和高度可以定义这个区域。
RenderingHints
RenderingHints 类定义和管理键和关联值的集合,它允许应用程序将输入提供给其他类使用的算法选择,这些类执行呈现和图像处理服务。
RenderingHints.Key
定义与RenderingHints一起使用的、用来控制呈现和图像管线中各种算法选择的所有键的基本类型。
此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。
Scrollbar 类描述了一个滚动条,这是大家都很熟悉的用户界面对象。
实现用于单个子组件的自动水平和/或垂直滚动的容器类。
ScrollPaneAdjustable
此类表示 ScrollPane 的水平或垂直滚动条的状态。
SplashScreen
在 Java 虚拟机 (JVM) 启动之前,可以在应用程序启动时创建闪现屏幕。
SystemColor
封装表示系统中本机 GUI 对象颜色的象征性颜色的类。
SystemTray
SystemTray 类表示桌面的系统托盘。
TextArea 对象是显示文本的多行区域。
TextComponent
TextComponent 类是所有允许编辑文本的组件的超类。
TextField
TextField 对象是允许编辑单行文本的文本组件。
TexturePaint
TexturePaint 类提供一种用被指定为BufferedImage的纹理填充 Shape的方式。
此类是所有 Abstract Window Toolkit 实际实现的抽象超类。
TrayIcon 对象表示可以添加到 系统托盘的托盘图标。
Window 对象是一个没有边界和菜单栏的顶层窗口。

接口摘要

编辑
ActiveEvent
知道如何对自身进行指派的事件的接口。
Adjustable
此接口用于那些具有可调整数值的对象,数值应包含在有限范围的值之内。
Composite 接口和CompositeContext一起定义了用基础图形区域组合绘图基本元素的方法。
CompositeContext
CompositeContext 接口为复合操作定义了已封装和已优化的环境。
ItemSelectable
包含零个或多个可选则项的集合的对象接口。
KeyEventDispatcher
在指派所有 KeyEvent 和为其确定目标时,KeyEventDispatcher 和当前 KeyboardFocusManager 一起使用。
KeyEventPostProcessor
在最终解析所有未使用的 KeyEvent 时,需要将 KeyEventPostProcessor 和当前的 KeyboardFocusManager 一起使用。
LayoutManager
定义知道如何布置 Container 类的接口。
LayoutManager2
为类定义接口,该类知道如何根据布局约束对象来布置 Container。
MenuContainer
所有菜单相关容器的超类。
此 Paint 接口定义如何为 Graphics2D操作生成颜色模式。
PaintContext
PaintContext 接口定义了经过封装和优化的环境,使用此环境可以生成设备空间中的颜色模式,此模式用于在 Graphics2D上进行填充操作或笔划操作。
PrintGraphics
提供页面的打印图形上下文的抽象类。
Shape 接口提供了表示一些几何形状的对象的定义。
Stroke
Stroke 接口允许 Graphics2D对象获得一个 Shape,该 Shape 是指定 Shape 的装饰轮廓,或该轮廓的风格表示形式。
Transparency
Transparency 接口定义用于实现类的通用透明模式。

异常摘要

编辑
AWTException
表示发生了 Absract Window Toolkit 异常。
FontFormatException
此异常由 Font 类中的 createFont 方法抛出,以指示指定的字体很糟糕。
HeadlessException
在不支持键盘、显示器或鼠标的环境中调用与键盘、显示器或鼠标有关的代码时,被抛出的异常。
IllegalComponentStateException
当 AWT 组件未处于所请求操作的适当状态时,抛出该异常。

枚举摘要

编辑
Component.BaselineResizeBehavior
常见方式的枚举,指示组件的基线可以随大小的更改而更改。
Desktop.Action
表示动作类型。
Dialog.ModalExclusionType
任何顶层窗口都可以标记为不受模式对话框阻塞。
Dialog.ModalityType
模式对话框阻塞对某些顶层窗口的所有输入。
MultipleGradientPaint.ColorSpaceType
在其中执行渐变插值操作的颜色空间。
MultipleGradientPaint.CycleMethod
在渐变边界以外进行绘制时使用的方法。
TrayIcon.MessageType
MessageType 确定哪个图标将显示在消息标题中,以及消息根据显示生成的可能的系统声音。

错误摘要

编辑
AWTError
当发生严重的 Abstract Window Toolkit 错误时,抛出此错误。

2、javax.swing.*:

           javax.swing                           |         最常用的pachage,包含了各种swing组件的类
           javax.swing.border               |         包含与swing组件外框有关的类
           javax..swing.colorchooser    |         针对swing调色盘组件(JColorChooser)所设计的类
           javax.swing.event                 |         处理由swing组件产生的事件,有别于AWT事件
           javax.swing.filechooser        |         包含针对swing文件选择对话框(JFileChooser)所设计的类
          ----------------------------------------------
           javax.swing.plaf                   |         处理swing组件外观的相关类
           javax.swing.plaf.basic          |         
           javax.swing.plaf.metal         |         
           javax.swing.plaf.multi          |  
           ----------------------------------------------       
           javax.swing.table                 |         针对swing表格组件(JTable)所设计的类
           ----------------------------------------------
           javax.swing.text                   |         包含与swing文字组件相关的类
           javax.swing.text.html           |
           javax.swing.text.html.parser|
           javax.swing.text.rtf               |
           ----------------------------------------------
           javax.swing.tree                   |         针对swing树关元件(JTree)所设计的类
           javax.swing.undo                 |         提供swing文字组件Redo或Undo的功能

3、java.io.*:提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类。
InputStream:继承自InputStream的流都是用于向程序中输入数据的,且 数据单位都是字节(8位)。
OutputStream:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。
Reader :继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。
Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

接口摘要

Closeable
Closeable 是可以关闭的数据源或目标。
DataInput
DataInput 接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构。
DataOutput
DataOutput 接口用于将数据从任意 Java 基本 类型转换为一系列字节,并将这些字节写入二进制流。
Externalizable
Externalizable 实例类的唯一特性是可以被写入 序列化流中,该类负责保存和恢复实例内容。
FileFilter
用于抽象路径名的过滤器。
FilenameFilter
实现此接口的类实例可用于过滤器文件名。
Flushable
Flushable 是可刷新数据的目标地。
ObjectInput
ObjectInput 扩展 DataInput 接口以包含对象的 读操作
ObjectInputValidation
允许验证图形中对象的 回调接口。
ObjectOutput
ObjectOutput 扩展 DataOutput 接口以包含对象的写入操作。
ObjectStreamConstants
写入 Object Serialization Stream 的常量。
Serializable
类通过实现 java.io.Serializable 接口以启用其 序列化功能。

类摘要

 
BufferedInputStream
BufferedInputStream 为另一个 输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。
BufferedOutputStream
该类实现缓冲的输出流。
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
ByteArrayInputStream
ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
ByteArrayOutputStream
此类实现了一个输出流,其中的数据被写入一个 byte 数组。
CharArrayReader
此类实现一个可用作字符 输入流的字符缓冲区。
CharArrayWriter
此类实现一个可用作 Writer 的字符缓冲区。
此类包含多个方法,可访问与当前 Java  虚拟机关联的基于字符的控制台设备(如果有)。
数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。
DataOutputStream
数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。
File
文件和目录路径名的抽象表示形式。
FileDescriptor
文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放 套接字或者字节的另一个源或接收者。
FileInputStream
FileInputStream 从文件系统中的某个文件中获得输入字节。
文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。
FilePermission
此类表示对文件和目录的访问。
FileReader
用来读取字符文件的便捷类。
用来写入字符文件的便捷类。
FilterInputStream
FilterInputStream 包含其他一些 输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
此类是过滤输出流的所有类的 超类
FilterReader
用于读取已过滤的字符流的 抽象类
FilterWriter
用于写入已过滤的字符流的抽象类。
此抽象类是表示字节 输入流的所有类的超类。
InputStreamReader
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
LineNumberInputStream
已过时。 此类错误假定字节能充分表示字符。

JFrame: java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭

1、构造方法

JFrame()
构造一个初始时不可见的新窗体。
JFrame(GraphicsConfiguration gc)
以屏幕设备的指定 GraphicsConfiguration 和空白标题创建一个 Frame。
JFrame(String title)
创建一个新的、初始不可见的、具有指定标题的 Frame。
JFrame(String title, GraphicsConfiguration gc)
创建一个具有指定标题和指定屏幕设备的 GraphicsConfiguration 的 JFrame。

2、常用方法

protected void    
addImpl( Component comp,  Object constraints, int index)
添加指定的子 Component。
protected JRootPane      
createRootPane()
由构造方法调用,以创建默认的 rootPane。
protected void
frameInit()
由构造方法调用,以适当地初始化 JFrame。
AccessibleContext
getAccessibleContext()
获得与此 JFrame 关联的 AccessibleContext。
getContentPane()
返回此窗体的 contentPane 对象
int
getDefaultCloseOperation()
返回用户在此窗体上发起 "close" 时执行的操作。
getGlassPane()
返回此窗体的 glassPane 对象。
getGraphics()
为组件创建一个图形上下文。
JMenuBar
getJMenuBar()
返回此窗体上设置的菜单栏。
JLayeredPane
getLayeredPane()
返回此窗体的 layeredPane 对象。
JRootPane
getRootPane()
返回此窗体的 rootPane 对象。
TransferHandler
getTransferHandler()
获取 transferHandler 属性。
static boolean
isDefaultLookAndFeelDecorated()
如果新创建的 JFrame 应该由当前外观为其提供 Window 装饰,则返回 true。
protected boolean
isRootPaneCheckingEnabled()
返回是否将对 add 和 setLayout 的调用转发到 contentPane。
protected String
paramString()
返回此 JFrame 的字符串表示形式。
protected void
processWindowEvent(WindowEvent e)
处理此组件上发生的窗口事件。
void
remove( Component comp)
从该容器中移除指定组件。
void
repaint(long time, int x, int y, int width, int height)
在 time 毫秒内重绘此组件的指定矩形区域。
void
setContentPane( Container contentPane)
设置 contentPane 属性。
void
setDefaultCloseOperation(int operation)
设置用户在此窗体上发起 "close" 时默认执行的操作。
static void
setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated)
提供一个关于新创建的 JFrame 是否应该具有当前外观为其提供的 Window 装饰(如边框、关闭窗口的小部件、标题等等)的提示。
void
setGlassPane( Component glassPane)
设置 glassPane 属性。
void
setIconImage( Image image)
设置要作为此窗口图标显示的图像。
void
setJMenuBar(JMenuBar menubar)
设置此窗体的菜单栏。
void
setLayeredPane(JLayeredPane layeredPane)
设置 layeredPane 属性。
void
setLayout(LayoutManager manager)
设置 LayoutManager。
protected void
setRootPane(JRootPane root)
设置 rootPane 属性。
protected void
setRootPaneCheckingEnabled(boolean enabled)
设置是否将对 add 和 setLayout 的调用转发到 contentPane。
void
setTransferHandler(TransferHandler newHandler)
设置 transferHandler 属性,该属性是支持向此组件传输数据的机制。
void
只是调用 paint(g)。

3、本题中:

构造:JFrame frame=new JFrame();

方法:

.getContentPane: 参考:https://blog.csdn.net/xuefeideren/article/details/41174677

.setBackground:设置颜色两种方法

①imageview.setBackgroundColor(Color.parseColor("#f34649"));

②imageview.setBackgroundColor(Color.rgb(213, 0, 0));

参考:https://www.jianshu.com/p/431ff6826854

.setLayout:setLayout是java图形界面编程的常用方法,用来设置用户界面上的屏幕组件的格式布局,默认为流式布局。常用的有5种:FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。

.setSize:函数语句,用于设置组件的长宽大小。setsize(a,b),a、b是这个函数的两个参数。a处的值就是组件的长,b处的值就是组件的宽,在a,b处赋值就能给组件的长宽赋予一个定值。

.setVisiable:使控件可以显示出来,如果该控件已经被显示出来,那么该方法是控件显示在窗口的最前方


——多数摘自百度百科



猜你喜欢

转载自blog.csdn.net/qq_41835967/article/details/80320881
今日推荐