实验五图形用户界面编程

news2025/1/25 9:19:54

目录

一、目的与任务

二、内容、要求与安排方式

三、实验设备

四、实验步骤


一、目的与任务

掌握常用事件及其处理模型;掌握常用GUI控制组件的使用及其事件的处理;掌握菜单的使用以及对话框的使用。

二、内容、要求与安排方式

1、实验内容与要求:

(1)编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。

(2)编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。

(3) 在窗体中添加标签、按钮并使用网格布局管理器排列组件在容器中的位置。

(4)

(5)在窗口中添加组件,运行效果图如下图所示。

2、要求:能够上机编辑、调试java程序;

3、实验安排方式:每组1人,独立完成上机实验;

三、实验设备

    1、所用设备:装有java开发环境的计算机

    2、消耗性器材:无

四、实验步骤

(1)

package 实验五;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Hello51 extends JFrame{
//		private JTextField t1;
		JLabel jl = new JLabel();
		public Hello51() {
			this.setTitle("切换");
			Container container = this.getContentPane();
			container.setLayout(new BorderLayout());
			JPanel panel = new JPanel();
			JPanel panelTop = new JPanel();
			JPanel panel1 = new JPanel();
//			panel.setBackground(Color.BLUE);
//			t1 = new JTextField(10);
			this.setLocationRelativeTo(null);
//			panelTop.add(t1);
			panel1.add(jl);
			JButton bt = new JButton("切换");
			bt.addActionListener(new action());
			panel.add(bt);
			container.add(panelTop, BorderLayout.CENTER);
			container.add(panel1, BorderLayout.NORTH);
			container.add(panel, BorderLayout.SOUTH);//SOUTH按钮位置
			this.setVisible(true);
			this.setSize(300,300);
		}
		int flag=0;
		class action implements ActionListener{
			public void actionPerformed(ActionEvent e) {
				
				if(flag==0) {
//					t1.setText(String.valueOf("再见"));
					jl.setText("再见");
					flag = 1;
				}
				else if(flag==1) {
//					t1.setText(String.valueOf("你好"));
					jl.setText("你好");
					flag = 0;
				}

			}
		}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		new Hello51();
	}

}

(2)

package 实验五;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;

import javax.swing.*;
public class Wen52 extends JFrame implements TextListener, ActionListener,KeyListener{
	private static TextField t1;
	private TextArea jr;
	public Wen52(){
		
		JFrame jf = new JFrame();
		jf.setSize(400, 200);
		jf.setAlwaysOnTop(true);
		jf.setTitle("文本");
		
		JPanel jp = new JPanel();
		JLabel w1= new JLabel("文本框");
		t1 = new TextField(10);
	
		jp.add(w1); 
		jp.add(t1);
		
		jr = new TextArea(6,30);
		jr.setEditable(false);
		
		jp.add(jr);
		
		jf.add(jp,BorderLayout.NORTH);
		
		jf.setLocationRelativeTo(null);
		jf.setVisible(true);
		jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		t1.addKeyListener(this);
//		t1.addActionListener(this);
		t1.addTextListener(this);
		
	}
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		new Wen52();
		
	}
	public void textValueChanged(TextEvent e) {
		// TODO 自动生成的方法存根
		jr.setText(t1.getText());
	}

	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		if(e.hashCode()==23675675) {
			jr.setText("");
		}
	}

	public void keyTyped(KeyEvent e) {
		// TODO 自动生成的方法存根
		
	}

	public void keyPressed(KeyEvent e) {
		// TODO 自动生成的方法存根
		if(e.getKeyCode()==KeyEvent.VK_ENTER) {
			jr.setText("");
		}
	}

	public void keyReleased(KeyEvent e) {
		// TODO 自动生成的方法存根
		
	}

	

}

 

(3)

package 实验五;

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

public class Biao53 extends JFrame{

	public Biao53() {
		this.setTitle("网格布局管理器");
		Container container = getContentPane();
		this.setLayout(new GridLayout(5,5,5,5));
		for(int i=0;i<12;i++) {
			container.add(new JLabel("标签" + i));
			container.add(new JButton("按钮" + i));
//			this.add(new JLabel("标签" + i));
//			this.add(new JButton("按钮" + i));
		}
		
		this.pack();//自适应

		this.setLocationRelativeTo(null);
		this.setAlwaysOnTop(true);
		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		new Biao53();
	}

}

(4)

package 实验五;

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

public class Windows54 extends JFrame{
	private JTextField t1;
	private JTextArea jr;
	private JRadioButton ju1;
	private JRadioButton ju2;
	private JRadioButton ju3;
	private JRadioButton ju4;
	private JCheckBox jc1;
	private JCheckBox jc2;
	private JCheckBox jc3;
	private JCheckBox jc4;
	
	Windows54(){
		this.setTitle("进制转换");
//		取消外框
//		this.setUndecorated(true);
		
		JPanel jp = new JPanel();
		JLabel jl1 = new JLabel("输入10进制数");
		t1 = new JTextField(10);
		//添加上部分
		jp.add(jl1);
		jp.add(t1);
		
		//中部分
		JPanel jp2 = new JPanel();
		jr = new JTextArea(6,20);
		//添加个文本域换行功能
		jr.setLineWrap(true);
		JScrollPane scroll = new JScrollPane(jr);
		JLabel jl2 = new JLabel("请选择进制:");
		//水平滚动条总是出现
//		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		//竖直滚动条总是出现
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		
		jp2.add(scroll,BorderLayout.WEST);
		jp2.add(jl2);
		
		//尾部分
		JPanel jp3 = new JPanel();
		JPanel jp5 = new JPanel();
		jc1 = new JCheckBox("2进制");
		jc2 = new JCheckBox("8进制");
		jc3 = new JCheckBox("16进制");
		jc4 = new JCheckBox("10进制");
		
		ju1 = new JRadioButton("2进制");
		ju2 = new JRadioButton("8进制");
		ju3 = new JRadioButton("16进制");
		ju4 = new JRadioButton("10进制");
		
		jp3.add(jc1);
		jp3.add(jc2);
		jp3.add(jc3);
		jp3.add(jc4);
		JPanel jp4 = new JPanel();
		ButtonGroup bg = new ButtonGroup();
		JLabel w1 = new JLabel("请选择进制");
		jp4.add(w1);
		//单选框放到一个组里,再分别放进面板
		bg.add(ju1);
		bg.add(ju2);
		bg.add(ju3);
		bg.add(ju4);
		//分别放进面板
		jp4.add(ju1);
		jp4.add(ju2);
		jp4.add(ju3);
		jp5.add(ju4);
		
		jp2.add(jp3,BorderLayout.NORTH );
		jp2.add(jp4,BorderLayout.CENTER);
		jp2.add(jp5,BorderLayout.CENTER);
		//界面添加部分
		this.add(jp, BorderLayout.NORTH);
		this.add(jp2, BorderLayout.CENTER);
//		this.add(jp5, BorderLayout.SOUTH);
//		this.add(jp4, BorderLayout.PAGE_END);
		
		
		//界面显示操作
//		this.pack();
		this.setSize(350,320);
		this.setAlwaysOnTop(true);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		new Windows54();
	}

}

(5)

package 实验五;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class add55 extends JFrame {
	private JTextArea jr;
	private JTextField t1;
	private JTextField t2;
	private JTextField t3;
	
	public add55(){
		this.setTitle("添加组件的窗口");
		
		//文本域操作
		jr = new JTextArea(6,23);
		JPanel jp = new JPanel();
		//添加个文本域换行功能
		jr.setLineWrap(true);
		JScrollPane scroll = new JScrollPane(jr);
		//竖直滚动条总是出现
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

		//添加上部分
		jp.add(scroll);
		
		//中部分
		JPanel jp2 = new JPanel();
		JPanel jp3 = new JPanel();
		JPanel jp4 = new JPanel();
		
		JLabel w1 = new JLabel("用户名");
		JLabel w2 = new JLabel("电话");
		
		t1 = new JTextField(7);
		t2 = new JTextField(7);
		t3 = new JTextField(15);
		
		
		JButton jb1 = new JButton("显示");
		JButton jb2 = new JButton("退出");
		//因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置
		//所以一般我们用button.setPreferredSize(new Dimension(30,30));
		jb1.setPreferredSize(new Dimension(25,18));
		jb2.setPreferredSize(new Dimension(25,18));
		
		jb1.setBorder(BorderFactory.createRaisedBevelBorder());
		jb2.setBorder(BorderFactory.createRaisedBevelBorder());
		
		jb1.setFont(new java.awt.Font("宋体", 1, 10));
		jb2.setFont(new java.awt.Font("宋体", 1, 10));
		
//		jb1.setBackground(Color.gray);
//		jb2.setBackground(Color.gray);
		//添加进入面板
		jp2.add(w1);
		jp2.add(t1);
		jp2.add(w2);
		jp2.add(t2);
		
		jp3.add(t3);
		jp3.add(jb1);
		jp3.add(jb2);
		
		jp4.add(jp2);
		jp4.add(jp3);
		//添加到界面
		this.add(jp,BorderLayout.NORTH);
		this.add(jp4,BorderLayout.CENTER);
		
		//界面显示操作
		this.setSize(300,250);
		this.setAlwaysOnTop(true);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		this.setDefaultCloseOperation(3);
		
		//事件
		jb1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				jr.setText("用户名:"+t1.getText()+"\n"+"电 话:"+t2.getText());
				t3.setText("你按下了“显示“按钮");
            }
		});
		jb2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(3);
            }
		});
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		new add55();
	}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud系列(五)Nacos 注册中心配置管理的设置及使用

介绍几种 Nacos 常用的配置, 如统一配置管理的步骤, 如何配置自动刷新及多环境配置优先级问题. Nacos 配置管理⚽️ 统一配置管理⚽️⚽️配置自动刷新⚽️⚽️⚽️ 多环境配置优先级⚽️ 统一配置管理 步骤一: 在 Nacos 中添加配置信息, 如添加时间格式的配置内容; 步骤二: …

Ribbon实战与原理剖析

一、ribbon概述 1、ribbon简介 目前主流的负载方案分为以下两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如 F5&#xff09;&#xff0c;也有软件的&#xff08;比如 Nginx&#xff0…

读写锁的学习与实验

目录 目录 1&#xff0c;场景 2&#xff0c;接口 3&#xff0c;场景模拟 1&#xff0c;场景 有一种场景&#xff0c;读者多&#xff0c;写者少&#xff0c;绝大多数的情况下我们都是在进行读取而不修改&#xff0c;只有少数的情况下我们才会修改。 场景一&#xff1a;比如…

解决jenkins构建失败,空间不足问题

随着构建次数过多&#xff0c;之后jenkins构建会出现空间不足的问题&#xff0c;解决方式如下&#xff1a; 目录 1.配置时&#xff0c;去除旧的构建任务 2.使用脚本&#xff0c;删除历史构建 3.清理磁盘空间 4.重新加载服务器节点 1.配置时&#xff0c;去除旧的构建任务 2…

计算机网络(自顶向下)学习笔记——路由选择算法

第五章—路由选择算法 5.1、路由的概念 路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条 从源节点到目标节点的较好路径 较好路径: 按照某种指标较小的路径指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均采用什么样的指标,表示网络使用者希望网络…

m基于优化算法的多车辆的路径规划matlab仿真,对比GA,PSO以及烟花算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成&#xff0c;连接起点位置和终点位置的序列点或曲线称之为路径&#xff0c;构成路径的策略称之为路径规划。路径规划在…

微软12月多个安全漏洞修复解决方案

安全狗应急响应中心监测到&#xff0c;微软发布了2022年12月份安全更新&#xff0c;事件等级&#xff1a;严重&#xff0c;事件评分&#xff1a;10.0。此次安全更新发布了52个漏洞的补丁&#xff0c;主要覆盖了以下组件&#xff1a;Azure; Office and Office Components; SysIn…

提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 一点小智慧 5 Matlab代码实现 1 概述 随着电力系统的复杂性和规模的增加&#xff0c;电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略&#xff0c;该策略基于通过…

如何使用typeScript实现贪吃蛇游戏?

1.配置文件 配置文件写过一次之后&#xff0c;可以复制粘贴使用&#xff0c;修改部分细节就可以了。 package.json {"name": "snake","version": "1.0.0","description": "","main": "index.js&q…

网络协议——RPC协议综述

拿最简单的场景&#xff0c;客户端调用一个加法函数&#xff0c;将两个整数加起来&#xff0c;返回它们的和。 如果放在本地调用&#xff0c;那是简单的不能再简单了&#xff0c;。但是一旦变成了远程调用&#xff0c;门槛一下子就上去了。 如何解决这五个问题&#xff1f; …

秦力洪复盘2022:蔚来的长板和误判

作者 | 张祥威 编辑 | 王博最初我们看蔚来&#xff0c;觉得它是中国的特斯拉。后来它主动挑战宝马&#xff0c;以46万的平均单价在高端品牌阵营厮杀&#xff0c;看上去又具备成为宝马的潜力。再到后来&#xff0c;蔚来宣布将推出全新品牌&#xff0c;喊话月销5万辆&#xff0c;…

[附源码]Nodejs计算机毕业设计基于大数据的高校国有固定资产管理及绩效自动评价系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Django学习15 -- 验证码

1. 验证码 验证码&#xff08;CAPTCHA&#xff0c;Completely Automated Public Turing test to tell Computers and Humans Apart&#xff09;&#xff0c;全自动区分计算机和人类的图灵测试的简称&#xff0c;一种区分用户是计算机还是人的公共全自动程序。防止恶意破解密码、…

Java+Swing+mysql实现学生选课管理系统

JavaSwing实现学生选课管理系统一、系统介绍二、系统展示1.课程查询2.课程添加3.退课三、系统实现四、其他1.其它系统2.获取源码一、系统介绍 本系统实现了学生登录和管理员登录&#xff0c;学生实现选课&#xff0c;查看已选课程&#xff0c;修改密码&#xff0c;查看学生信息…

Vue.use 与 Vue.prototype 在注册插件时,使用上有什么区别

很多使用Vue开发的童鞋&#xff0c;可能对Vue的原型对象prototype有了解过&#xff0c;但对于Vue.use只知如何使用&#xff0c;却不知其背后的含义。那么&#xff0c;今天我们就来瞧一瞧Vue.use()背后的逻辑。 &#x1f388; 首先&#xff0c;Vue.use()是什么&#xff1f; 官方…

外汇天眼:投资200美元起 每天收益7%!千万别被蒙蔽双眼!

12月14日&#xff0c;英国金融行为监管局( FCA )首次对 GoldVest FX 发出警告&#xff0c;提示投资者警惕与这家未经授权的公司打交道。 FCA警告称&#xff1a;GoldVest FX 在未经我们授权的情况下在英国提供金融服务或产品&#xff0c;如果一旦遭受资金损失&#xff0c;您将无…

logback-spring.xml 配置化说明记录如何在SpringBoot项目里面配置logback-spring.xml教程说明

目录 前言描述 logback-spring.xml 配置项详细 配置位置路径 前言描述 无论什么样的java应用都需要日志分级&#xff0c; 日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。1.static L…

【三维目标检测】FCAF3D(二)

FCAF3D数据和源码配置调试过程请参考上一篇博文&#xff1a;【三维目标检测】FCAF3D&#xff08;一&#xff09;_Coding的叶子的博客-CSDN博客。本文主要详细介绍FCAF3D网络结构及其运行中间状态。 1 模型总体过程 FCAF3D模型的整体结构如下图所示。该模型属于anchor-free目标…

SIoU Loss 原理与代码解析

paper&#xff1a;SIoU Loss: More Powerful Learning for Bounding Box Regression code&#xff1a;https://github.com/meituan/YOLOv6/blob/main/yolov6/utils/figure_iou.py#L75 存在的问题 之前的目标检测模型的回归损失考虑到了预测的bounding box和gt box之间的dis…

【头歌C语言程序与设计】选择结构程序设计进阶

目录 写在前面 正文 第1关&#xff1a;快递费用计算 第2关&#xff1a;计算一元二次方程的根 第3关&#xff1a;产品信息格式化 写在最后 写在前面 本文代码是我自己所作&#xff0c;本人水平有限&#xff0c;可能部分代码看着不够简练&#xff0c;运行效率不高,但都能运…