黑马程序员_java语言_GUI

本文介绍了Java GUI编程的基础知识,包括窗口创建、布局管理、监听器应用等关键概念。通过实例演示了如何创建一个基本的窗口,设置了尺寸、位置、标题,并应用了不同类型的布局管理器,以及如何实现窗口监听和鼠标、键盘监听。此外,还引入了适配器设计模式简化事件监听的编写过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

###19.01_GUI(如何创建一个窗口并显示)

GUI 是 Graphical User Interface 的缩写,即「图形使用者接口」。在传统的操作系统 MS-DOS 文字模式下,屏幕上显示的是单调的文字接口,使用者必须透过键盘输入指令,才能操作计算机。麻烦的是如果你的英文不好,光是背指令,就够让你头痛了。
所幸, Windows 95 以后的版本中,GUI 的操作环境以图形及窗口方式显示,使用者只要用鼠标进行操作,英文再怎么不行,照样可以看图标找到需要的指令来进行操作。所以 GUI 接口的亲和性设计,可说是操作系统设计上的一大突破

对于GUI的结构我们做一个简单的表示:

 Component: 它代表的是界面上 显示的所有的组件,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条
 *   |- Button 按钮
 *   |- Canvas 画布
 *   |- Checkbox 复选框
 *   |- Label 标签,用来在页面显示文本信息,不能够编辑
 *   |- List 可滚动的列表
 *   |- Scrollbar 滚动条
 *   |- JComponent
   |- JTable 表格
 *   |- TextComponent
 *    |- TextField 单行文本框
 *    |- TextArea 多行文本框(文本域)
 *   |- Container 容器
 *    |- Window 窗口
 *     |- Frame 窗体
 *     |- Dialog 对话框
 *      |- FileDialog 文件对话框
 *    |- Panel 面板

<span style="font-size:14px;">public class FrameDemo {
	public static void main(String[] args) {
		//创建窗体对象
		//设置标题
		Frame frame = new Frame("适配器设计模式");
		
		//设置尺寸大小
		frame.setSize(500, 500);
		//设置位置
		frame.setLocation(400, 100);
		
		//添加事件监听
		//WindowAdapter接收窗口事件的抽象适配器类
		frame.addWindowListener(new WindowAdapter() {

			//关闭窗口
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
		});
		//显示窗体
		frame.setVisible(true);
	}
}</span>

Graphical User Interface(图形用户接口)。
* Frame  f = new Frame(“my window”);
        f.setLayout(new FlowLayout());//设置布局管理器
        f.setSize(500,400);//设置窗体大小
        f.setLocation(300,200);//设置窗体出现在屏幕的位置
        f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));

        f.setVisible(true);

<span style="font-size:14px;">public class FrameDemo {
	public static void main(String[] args) {
		//创建窗体
		//事件源:  窗体, 银行
		Frame frame = new Frame();
		//设置标题
		frame.setTitle("人来银行");
		
		//设置尺寸大小
		frame.setSize(500, 500);
		
		//设置位置 
		frame.setLocation(400, 100);
		
		//事件监听: 窗口监听器   摄像头,保安
		//public synchronized void addWindowListener(WindowListener l)
		//new MyWindowListener();//创建一个保安
		//创建一个保安,来监听银行要发生的事件
		frame.addWindowListener(new MyWindowListener());
		
		//显示
		frame.setVisible(true);
	}
}
</span>

首先了解一下Frame:

Frame 是带有标题和边框的顶层窗口 
 *  构造方法: 
 *   public Frame() 构造一个最初不可见的 Frame 新实例()。Frame 的标题为空。
 *
 *   方法:
 *    public void show() 方法 显示窗口, 过时了
 *    public void setVisible(boolean b)根据参数 b 的值显示或隐藏此组件。
 *    public void setTitle(String title) 设置标题
 *
 *    public void setSize(int width, int height) 设置窗口大小
 *    public void setSize(Dimension d) 设置窗口大小,传一个尺寸对象
 *     //Dimension 类封装单个对象中组件的宽度和高度
 *
 *    public void setLocation(int x, int y) 设置窗口位置
 *    public void setLocation(Point p)设置窗口位置,传一个坐标点对象

<span style="font-size:14px;">public class FrameDemo {
	public static void main(String[] args) {
		//创建一个窗口
		Frame f = new Frame();
		
		//设置一个标题
		f.setTitle("给我一个标题");
		
		//设置窗口位置
		f.setLocation(500, 250);//单位: 像素
		
		//设置窗口大小
		f.setSize(300, 200);
		
		//显示窗口
		//f.show();
		f.setVisible(true);
	}
}</span>

###19.02_GUI(布局管理器)
FlowLayout(流式布局管理器)
    * 从左到右的顺序排列。
    * Panel默认的布局管理器。
BorderLayout(边界布局管理器)
    * 东,南,西,北,中
    * Frame默认的布局管理器。
GridLayout(网格布局管理器)
    * 规则的矩阵
CardLayout(卡片布局管理器)
    * 选项卡
GridBagLayout(网格包布局管理器)
    * 非规则的矩阵

<span style="font-size:14px;">//创建窗体
		JFrame frame = new JFrame("键盘监听");
		
		//设置大小与位置
		frame.setBounds(200, 200, 400, 200);
		//设置窗口关闭
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出后关闭
		
		//设置窗体的布局方式
		frame.setLayout(null);//帧布局
		//-----------------------------------------------
		//创建一个标签
		Label label = new Label("请输入QQ号码");
		label.setBounds(150, 30, 100, 30);
		frame.add(label);</span>

###19.03_GUI(窗体监听)
    Frame f = new Frame("我的窗体");
    //事件源是窗体,把监听器注册到事件源上

    //事件对象传递给监听器

<span style="font-size:14px;"> f.addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                         //退出虚拟机,关闭窗口
            System.exit(0);
        }
    });</span>

 

###19.04_GUI(鼠标监听)

<span style="font-size:14px;"><span style="color:#000000;">                    //蓝色按钮,添加鼠标监听
		blueButton.addMouseListener(new MouseAdapter() {
			//进入按钮范围
			@Override
			public void mouseEntered(MouseEvent e) {
				//设置背景色颜色为 蓝色
				frame.setBackground(Color.BLUE);
			}

			//退出按钮范围
			@Override
			public void mouseExited(MouseEvent e) {
				//设置背景色颜色为白色
				frame.setBackground(Color.WHITE);
			}
			
		});
</span>		</span>

 

###19.05_GUI(键盘监听和键盘事件)

键盘监听:
 *   事件监听主要是针对awt包下的组件使用
 *   在对swing包下的组件使用的时候,可能会产生问题

<span style="font-size:14px;">                //创建一个文本框
		//JTextField field = new JTextField(40);
		TextField field = new TextField(40);
		field.setBounds(150, 80, 100, 30);
		frame.add(field);
		//----------------------------------------------
		//为文本框 添加  键盘监听
		field.addKeyListener(new KeyAdapter() {
			//按键按下时激活
			@Override
			public void keyPressed(KeyEvent e) {
				//int code = e.getKeyCode();	
				char ch = e.getKeyChar();
				
				//判断当前按下的按键是否是数字
				//if (code >= 48 && code <= 57) {
					//是数字: 在文本框中显示
				//} else {
					//否数字: 阻止  当前按键对应的字符,在文本框中显示
				//	e.consume();
				//}
				</span>

###19.06_设计模式(适配器设计模式)
a.什么是适配器
    * 在使用监听器的时候, 需要定义一个类事件监听器接口.
    * 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
    * 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.
b.适配器原理
    * 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
    * 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.

<span style="font-size:14px;">/*
 * 通过适配器设计模式来完成窗口关闭
 */
public class FrameDemo {
	public static void main(String[] args) {
		//创建窗体对象
		//设置标题
		Frame frame = new Frame("适配器设计模式");
		
		//设置尺寸大小
		frame.setSize(500, 500);
		//设置位置
		frame.setLocation(400, 100);
		
		//添加事件监听
		//WindowAdapter接收窗口事件的抽象适配器类
		frame.addWindowListener(new WindowAdapter() {

			//关闭窗口
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
		});
		
		//显示窗体
		frame.setVisible(true);
	}
}</span>


###19.07_GUI(需要知道的) 
事件处理
    * 事件: 用户的一个操作
    * 事件源: 被操作的组件
    * 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值