JAVA_XXBJ(14)面板添加文本框和按钮_淘客拓的博客-程序员信息网

技术标签: java  Java笔记  

导入图片

虽然Java里面有画笔,但我们不可能说用画笔去绘画一个背景之类的,很不现实,所以我们可以加入图片,使用外界的图片。
第一步:放入图片
我们从网上找一堆图片,将图片放在同一个文件夹里面,将文件夹复制到项目下面去,如图:
在这里插入图片描述

第二步:导入图片
创建一个图片变量(全局变量),把图片赋值给图片变量,这一步是在面板的构造方法里面,然后在paint函数里面绘制背景图片
第三步:处理异常
异常表示有风险,有两种解决方式,一种是逐级上报,另一种则是制作日志,这里选择第二种。
把鼠标放在ImageIO,选择try/catch
具体代码

class BOKPanel extends JPanel{
    
		//背景图片变量
		Image background;//定义图片变量 background
		public BOKPanel() {
    
			// 读取图片文件赋值给background变量
			try {
    //尝试
				background = ImageIO.read(new File("Image/login.jpg"));
				//文件在Image文件夹
			} catch (IOException e) {
    //捕获,万一出错,
				// TODO Auto-generated catch block
				e.printStackTrace();//把异常日志信息打印出来
			}
		}
		//绘制方法
		@Override
		public void paint(Graphics g) {
    
			super.paint(g);
			//绘制背景图片
			g.drawImage(background, 0, 0,1199,660,null);
		}
	}	
	

//记得导包

JLabel

JLabel的作用就是创建文本,图片,图文…使用JLabel可以在背景图片上面增加文字或图片。
先声明一个对象全局变量,然后调用JLabel构造方法,设定绝对布局
代码如下:

JLabel user;
public bok_1() {
    
	user = new JLabel("使用者");
	user.setBounds(600, 300, 40, 30);
	this.add(user);
	
	BOKPanel panel = new BOKPanel();
	this.add(panel);
	
	this.setSize(1198, 600);
	this.setLocationRelativeTo(null);
	this.setUndecorated(true);
	this.setDefaultCloseOperation(3);//这里3就是JFrame.EXIT_ON_CLOSE
	//logo
	this.setIconImage(new ImageIcon("image/115.png").getImage());
	this.setVisible(true);	
}

//记得导包

JTextField和JPasswordField

JTextField是文本输入框,JPasswordField是密码输入框(输入进去的是看不见的),这两个的具体操作步骤 如JLabel;
代码如下:

	JLabel user;
	JTextField text;
	JPasswordField password;
public bok_1() {
    
	user = new JLabel("使用者");
	user.setBounds(100, 300, 40, 30);
	this.add(user);
	
	text = new JTextField();
	text.setBounds(670, 300, 100, 30);
	this.add(text);
	
	password = new JPasswordField();
	password.setBounds(670, 350, 100, 30);
	this.add(password);
		
	
	BOKPanel panel = new BOKPanel();
	this.add(panel);
	
	this.setSize(1198, 600);
	this.setLocationRelativeTo(null);
	this.setUndecorated(true);
	this.setDefaultCloseOperation(3);//这里3就是JFrame.EXIT_ON_CLOSE
	//logo
	this.setIconImage(new ImageIcon("image/115.png").getImage());
	this.setVisible(true);
}

//记得导包

JButton 按钮

实际操作和上面JLabel,JtextField,JPasswordText一样,但按钮毕竟是按钮,按钮可以增加一些功能,添加判断语句之类的,很好用。

下面是具体代码:

	JLabel user;
	JTextField text;
	JPasswordField password;
	JButton button;
public bok_1() {
    
	user = new JLabel("使用者");
	user.setBounds(100, 300, 40, 30);
	this.add(user);
	
	text = new JTextField();
	text.setBounds(670, 300, 100, 30);
	this.add(text);
	
	password = new JPasswordField();
	password.setBounds(670, 350, 100, 30);
	this.add(password);
	
	button = new JButton("按钮");
	button.setBounds(100, 400, 100, 100);
	button.addActionListener(new ActionListener() {
    
		//按钮监听
		@Override
		public void actionPerformed(ActionEvent e) {
    
			// TODO Auto-generated method stub
			String userName = text.getText();
			if("L777".equals(userName)){
    
				System.out.println("nice");
				JOptionPane.showMessageDialog(null,"nice");
			}
		}
	});
	
	this.add(button);
	
	
	BOKPanel panel = new BOKPanel();
	this.add(panel);
	
	this.setSize(1198, 600);
	this.setLocationRelativeTo(null);
	this.setUndecorated(true);
	this.setDefaultCloseOperation(3);//这里3就是JFrame.EXIT_ON_CLOSE
	//logo
	this.setIconImage(new ImageIcon("image/115.png").getImage());
	this.setVisible(true);
}

全部代码

package bok;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class bok_1 extends JFrame {
    
	JLabel user;
	JTextField text;
	JPasswordField password;
	JButton button;
public bok_1() {
    
	user = new JLabel("使用者");
	user.setBounds(100, 300, 40, 30);
	this.add(user);
	
	text = new JTextField();
	text.setBounds(670, 300, 100, 30);
	this.add(text);
	
	password = new JPasswordField();
	password.setBounds(670, 350, 100, 30);
	this.add(password);
	
	button = new JButton("按钮");
	button.setBounds(100, 400, 100, 100);
	button.addActionListener(new ActionListener() {
    
		//按钮监听
		@Override
		public void actionPerformed(ActionEvent e) {
    
			// 获取文本内容
			String userName = text.getText();
			if("L777".equals(userName)){
    
				System.out.println("nice");
				JOptionPane.showMessageDialog(null,"nice");
			}
		}
	});
	
	this.add(button);
	BOKPanel panel = new BOKPanel();
	this.add(panel);
	
	this.setSize(1198, 600);
	this.setLocationRelativeTo(null);
	this.setUndecorated(true);
	this.setDefaultCloseOperation(3);//这里3就是JFrame.EXIT_ON_CLOSE
	//logo
	this.setIconImage(new ImageIcon("image/115.png").getImage());
	this.setVisible(true);	
}
	public static void main(String[] args) {
    
		// TODO Auto-generated method stub
		new bok_1();
	}

	class BOKPanel extends JPanel{
    
		//背景图片变量
		Image background;//定义图片变量 background
		public BOKPanel() {
    
			// 读取图片文件赋值给background变量
			try {
    //尝试
				background = ImageIO.read(new File("Image/login.jpg"));
				//文件在Image文件夹
			} catch (IOException e) {
    //捕获,万一出错,
				// TODO Auto-generated catch block
				e.printStackTrace();//把异常日志信息打印出来
			}
		}
		//绘制方法
		@Override
		public void paint(Graphics g) {
    
			super.paint(g);
			//绘制背景图片
			g.drawImage(background, 0, 0,1199,660,null);
		}
	}		
}

(个人学习总结,如有错误,敬请斧正,学习时间,20,11)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_51198729/article/details/109770094

智能推荐

阿里巴巴Java开发手册实战:Java命名规范_托尼Lee的博客-程序员信息网

阿里巴巴Java开发手册实战:100篇实例详解~~~~~~~~~~~~~~~~~~~~~~~~~~~~Java方法等命名规范

Basic wireless/3GPP_lengxingfei的博客-程序员信息网

Basic wireless/3GPPQuestionsWhat’s the difference between GPRS and UMTS?What’s the relation between GPRS and IP?Can you do voice calls with GPRS?What is the relation between GPRS and SIP?W

稀疏表示 河流多元信息处理 matlab_(空·白)的博客-程序员信息网_稀疏表示matlab

稀疏表示河流多元信息处理前言一、简要介绍多源数据稀疏表示1)稀疏表示:二、使用步骤总结前言现有来自黄河流域的大量钻孔数据,需要完成以下任务:简单概括多源数据稀疏表示的基本原理?如下图,BX、MQ、WB钻孔数据来自于金沙江、嘉陵江、汉江和废黄河四个源头的比重是多少?在题目2的基础上讨论利用PCA给多源数据适当的降维,换句话说就是计算不同个数的元素(Al、Fe、K、Ca、Na、Mg、Ti、Mn、Sr、Ba、V、Cr、Ni、Xlf、Xarm、SIRM、HIRM100、HIRM300、S.

二、虚拟化_Zhang_Yixuan_ss的博客-程序员信息网

一、虚拟化技术的发展虚拟化技术和并行计算、分布式计算、网格计算等的发展促进了云计算技术的产生和发展,通过云计算技术,我们将大量的计算机资源组成资源池来创建高度虚拟化的资源提供给用户,即云计算技术解决方案依靠并利用虚拟化提供服务。虚拟化技术主要应用在基础设施即服务的服务模式(IaaS)中,大多资源都可以通过虚拟化技术对其进行统一管理。虚拟化在计算机领域的发展至今已有50多年了,在这期间产生了很多种虚...

计算机室内设计 cad 论文,cad室内设计开题报告_思睿-three的博客-程序员信息网

cad室内设计开题报告简介:此栏目是开题报告和室内设计有关的论文例文,免费给你写cad室内设计柜子提供有关参考文献。一、研究背景1 基于英语新课程标准的要求。《英语课程标准》指出:必须正视学生外语学习基础和发展要求的差异,遵循外语学习的客观规律,英语教学强调。摘 要:对于博物馆而言,其是对一个地区城市乃至一个国家的历史文化的保留和发展,通过建筑空间向社会大众表现。 博物馆的内在的建筑空间格局对其展...

ADAS技术概要_linolzhang的博客-程序员信息网

先进驾驶辅助系统(Advanced DriverAssistant System),简称ADAS,是智能交通领域的一个大方向,近几年ADAS迅速发展,在车道线检测、前车防撞、疲劳驾驶、紧急壁障、信号灯识别等方面都取得了长足的进步,这也是我们把ADAS单独作为一节来进行阐述的原因。        当然ADAS系统会用到多种传感器,比如激光雷达、深度摄像头等,这里我们仅通过传统的RGB摄像头来

随便推点

Spring boot项目mvn命令行启动应用,解决target/demo-1.0-SNAPSHOT.jar中没有主清单属性问题_byzf的博客-程序员信息网

Spring boot项目mvn命令行启动应用,解决-SNAPSHOT.jar中没有主清单属性问题文章目录Spring boot项目mvn命令行启动应用,解决-SNAPSHOT.jar中没有主清单属性问题一、什么是maven二、使用三、附录一、什么是mavenApache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从中心信息块管理项目的构建、报告和文档。软件下载地址:https://maven.apache.org/download.cgi二、使用

AHB_weixin_33819479的博客-程序员信息网

AHB百科名片AHB总线互联结构图随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC(System on Chip的缩写,称为系统级芯片,也有称片上系统)设计中,片上总线设计是最关键的问题。为此,业界...

SpringBoot2.x基础篇:配置文件中占位符的使用_恒宇少年的博客-程序员信息网

知识改变命运,撸码使我快乐,2020继续游走在开源界点赞再看,养成习惯给我来个Star吧,点击了解下基于SpringBoot的组件化接口服务落地解决方案概念占位符是一种灵活的配置方式,可以让我们很灵活的使用配置参数,@Value注解的配置也是占位符的一种体现方式,这种方式可以从Environment内获取对应的配置值。推荐阅读SpringBoot2.x 教程汇总...

【腾讯Bugly干货分享】WebVR如此近-three.js的WebVR示例解析_Golang语言社区的博客-程序员信息网

关于WebVR最近VR的发展十分吸引人们的眼球,很多同学应该也心痒痒的想体验VR设备,然而现在的专业硬件价格还比较高,入手一个估计就要吃土了。但是,对于我们前端开发者来说,我们不仅可以简单地在手机上进行视觉上的VR体验,还可以立马上手进行Web端VR应用的开发!WebVR是一个实验性的Javascript API,允许HMD(head-mounted displays)连接到web

oracle将memory_target改为自动管理方式,AMM调整为ASMM命令(关闭memory_target自动管理方式)..._北京小小在香港的博客-程序员信息网

客户生产系统,AIX oracle 11.2.0.4 数据库版本,2节点RAC。操作系统内存,均为125G,调整前,使用oracle memory_target自动调整分配方式,memory_max_target大小80G大小,但是shared pool大小为21G。客户之前存在内存不够用(由于客户应用问题,导致几乎所有的SQL都需要重新硬解析,最终导致oracle shared pool大小不断...

点云平面拟合及可视化_Alan Lan的博客-程序员信息网

#include <pcl/io/pcd_io.h>#include <pcl/common/centroid.h>#include <pcl/segmentation/sac_segmentation.h>#include <pcl/visualization/pcl_visualizer.h>void visualization(const pcl::PointCloud<pcl::PointXYZRGB>::Ptr clou...

推荐文章

热门文章

相关标签