Swing程序设计(4)JLabel标签和导入图片

news2024/11/23 19:15:20

文章目录

  • 前言
  • 一、JLabel标签
    • 1.介绍
    • 2.实例展示
  • 二、JLabel中绘图和导入图片
    • 1.自定义绘图
    • 2.导入图片
  • 总结

前言

        本文介绍了Swing程序中JLabel标签的使用,以及在标签中导入图片和自定义图标的方法。


一、JLabel标签的使用

1.介绍

        JLabel标签:在Swing程序中显示文本或提示信息的组件,支持文本字符和图标,可以用于显示图片。

        语法:

JLabel jl = new JLabel();
//创建一个标签对象jl

        常用的构造方法:

    new JLabel();  
//创建一个不带图标和文本的JLabel对象

    new JLabel(Icon icon);  
//创建一个带图标的JLabel对象 

    new JLabel(Icon icon , int aligment); 
//创建一个带图标,并且设置了图标水平对齐方式的JLabel对象

    new JLabel(String text , int aligment);
//创建一个带文本,并且设置了文本水平对齐方式的JLabel对象 

    new JLabel(String text , Icon icon , int aligment);
//创建一个带文本、带图标,并且设置标签内容水平对齐方式的JLabel对象            

2.实例展示

import java.awt.*;
import javax.swing.*;
//导入Swing程序的包

public class LabelDemo extends JFrame{
//继承导入包中的JFrame窗体类,创建窗体
    
    public LabelDemo(){
        //创建构造方法,对象为 LabelDemo() ,可在此方法中对此对象进行代码操作
        
        setBounds(100,100,100,100);
        //设置窗体的大小,生成位置
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //设置窗体的关闭方式
        
        Container c = getContentPane();
        //获取该窗体的容器

        JLabel a = new JLabel("这是一个标签", null, SwingConstants.CENTER);
        //创建一个Jlabel对象,设置好文本,图标未设置,对齐方式为居中
        
        c.add(a);
        //容器中添加JLabel组件

        setVisible(true);
        //设置为窗体可视化
    }
    
    public static void main(String[] args) {
        new LabelDemo();
    }
}

         运行结果:

二、JLabel中绘图和导入图片

        Swing中的图标可以放置于JButtonJLabel组件上,通过图标更加直观地描述按钮、标签的用途。Swing程序还允许图片替代图标,展示于JButtton、JLabel组件上。

1.自定义绘图

        介绍:自定义图标,通过实现Swing程序中的Icon接口,可以给定图标的形状、大小、颜色等特性

        Icon接口中需要实现的抽象方法

    public int getIconWidth();
//用于获取图标的宽

    public int getIconHeight();
//用于获取图标的高

    public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3);
//用于实现在指定坐标下位置进行绘制图标

        实例展示:

import javax.swing.*;
import java.awt.*;
//导入swing包,awt包

public class Demo extends JFrame implements Icon{  
    /*Swing包中的Icon接口:可以自定义图标,用于绘图,创建时确定图标的大小、颜色等特性
        Icon接口中的要实现的三个抽象方法:
            1. public int getIconHeigth() 方法: 用于获取图标的宽
            2. public int getIconWidth() 方法:用于获取图标的高
            3. public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3) 方法: 用于实现在指定坐标位置画图
    */
    private static int width;   //设置了图标的宽(全局变量)
    private static int height;  //设置了图标的高(全局变量)

    public int getIconWidth(){  
    //实现Icon接口中的抽象方法 getIconWidth()
        return this.width;
    }

    public int getIconHeight(){
    //实现Icon接口中的抽象方法 getIconHeight()
        return this.height;
    }

    public void paintIcon(Component arg0, Graphics arg1, int x, int y){
    //实现Icon接口中的抽象方法 paintIcon()
        
        arg1.fillOval(x, y, width, height);  
        //在指定的矩形区域内绘制一个填充的椭圆形,宽和高分别为width和heigth

        // arg1.fill3DRect(arg3, arg3, arg2, arg3, false);  绘制一个3D矩形
        // arg1.fillArc(arg3, arg3, arg3, arg3, arg2, arg3);  绘制一个弧形
        // arg1.fillPolygon(null, null, arg3);  绘制一个多边形
        // arg1.fillRect(arg3, arg3, arg2, arg3);  绘制一个矩形
        // arg1.fillRoundRect(arg3, arg3, arg3, arg3, arg2, arg3);  绘制一个圆角矩形

    }

    public Demo(int width,int height){  //定义构造方法
        this.height = height;
        this.width = width;
        //通过构造方法,实例化对象赋值,设置图标的宽和高
    }

    public static void main(String[] args) {
        
        Demo icon = new Demo(15,15);    
        //创建Demo对象icon图标,宽为15像素,高为15像素
        
        JLabel jl = new JLabel("测试",icon, SwingConstants.CENTER);
        //设置了标签的文本,图标,及其水平对齐方式

        JFrame jf = new JFrame("绘图");
        //创建了一个窗体对象
        
        Container c = jf.getContentPane();
        //获取窗体容器

        c.add(jl);
        //添加标签组件

        jf.setBounds(100, 100, 200, 200);
        //设置窗体生成位置和大小

        jf.setVisible(true);
        //窗体可视化
        
    }
}

        输出结果:

2.导入图片

        介绍:Swing的图标可以导入图片。Swing利用 javax.swing.ImageIcon类,根据现有图片资源创建图标对象,ImageIcon类实现了Icon接口,不需要自定义图标那样一一实现。

问:如何获取到我们电脑上现有的图片资源呢?

答:导入java.net.URL;

        java.net.URL是Java标准库中的一个类,用于表示URL(统一资源定位符),即Web上的地址。它所在的包是java.net,该包包含了Java中与网络通信相关的类和接口。java.net.URL类提供了许多方法来访问URL的各个组成部分,比如协议、主机名、端口号、路径等等。它还可以用于打开网络连接并读取数据。

         常用的构造方法:

    new ImageIcon();
/*创建一个通用的ImageIcon图像图标对象,
    需要显示该图片时,
    对标签对象使用 setImage(Image image) 方法来操作
*/

    new ImageIcon(Image image);
//直接从图片源中创建图标

    new ImageIcon(Image image,String description);
//直接从图片源中创建图标,并且未突变添加简短描述,不会显示可以使用getDescription()方法获取该描述

    new ImageIcon(URL url);
//通过路径,利用位于计算机网络上的图像文件创建图标

 想要在窗体中展示的图像如下:

         实例展示:

import javax.swing.*;
import java.awt.*;
//导入Swing程序的包

import java.net.URL;
//导入获取资源定位URL的包

public class Example extends JFrame{
    public Example() {
        
        setTitle("项目1");  
        //设置父窗体标题
        
        Container container = getContentPane();
        //获取容器
        
        JLabel jl = new JLabel("这是一个java图片",JLabel.CENTER);
        //创建一个标签,设置好标签内容,水平对齐方式

        URL url = Example.class.getResource("java.png");
        //getResource方法中输入图片的相对路径,获取"java.png"图片文件所在的URL路径,赋值给 url路径对象  
    
        Icon icon = new ImageIcon(url);     
        //url路径对象 实例化成一个Icon图标对象,ImageIcon类实现了Icon接口的所有抽象方法,跳过了自定义图标的步骤

        jl.setIcon(icon);   
        //为标签设置图片
        
        container.add(jl);  
        //将标签添加到容器中
        
        setBounds(100, 100, 600, 600);   
        //设置窗体大小
        
        setVisible(true);   
        //使窗体可见

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //设置关闭方式 

    }

    public static void main(String[] args) {
        new Example();
    }
}

        运行结果:

 


总结

        以上就是本文介绍的Swing程序中JLabel标签的使用,以及在标签中导入图片和自定义图标的方法。若有补充、指正、指点、疑问的地方,欢迎在评论区中留言,我将及时进行反馈。

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

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

相关文章

模拟实现map/set[改编红黑树实现map/set容器底层]

文章目录 1.搭建框架1.1map1.2set1.3RBTree1.4图解 2.代码剖析2.1RBTree.h2.2Map.h2.3Set.h2.4Test.cpp 1.搭建框架 1.1map 1.2set 1.3RBTree 1.4图解 2.代码剖析 2.1RBTree.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <list&…

.net 温故知新:Asp.Net Core WebAPI 入门使用及介绍

在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。 一、创建一个WebApi项目 我使用的是VS2022, .Net 7版本。 在创建界面有几项配置: 配置Https启用Docker使用控制器启用OpenAPI支持不使用顶级语句其中配置…

YOLOv5-PTQ量化部署

目录 前言一、PTQ量化浅析二、YOLOv5模型训练1. 项目的克隆和必要的环境依赖1.1 项目克隆1.2 项目代码结构整体介绍1.3 环境安装 2. 数据集和预训练权重的准备2.1 数据集2.2 预训练权重准备 3. 训练模型3.1 修改数据配置文件3.2 修改模型配置文件3.3 训练模型3.4 mAP测试 三、Y…

[NOIP2012 提高组] 国王游戏(贪心,排序,高精度)

[NOIP2012 提高组] 国王游戏 题目描述 恰逢 H 国国庆&#xff0c;国王邀请 n n n 位大臣来玩一个有奖游戏。首先&#xff0c;他让每个大臣在左、右手上面分别写下一个整数&#xff0c;国王自己也在左、右手上各写一个整数。然后&#xff0c;让这 n n n 位大臣排成一排&…

基于SpringBoot的大学生租房平台

基于SpringBoot的大学生租房平台的设计与实现&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员、房东 管理员&#…

ck 计算留存

1.函数介绍 参数聚合函数 | ClickHouse Docs Retention​ 该函数将一组条件作为参数&#xff0c;类型为1到32个 UInt8 类型的参数&#xff0c;用来表示事件是否满足特定条件。 任何条件都可以指定为参数&#xff08;如 WHERE). 除了第一个以外&#xff0c;条件成对适用&…

第七章 查找 十、散列查找

一、哈希表&#xff08;散列表&#xff09; 哈希表的数据元素的关键字与其存储地址直接相关。 二、解决冲突的方法 三、散列表中元素的查找 总共对比了3个关键字&#xff0c;所以查找长度为3. 四、查找效率计算 &#xff08;1&#xff09;成功的概率 需要对比一次的关键字为…

保存锁屏壁纸 win11

经常在锁屏看见自己超级喜欢的壁纸&#xff0c;但是找不到在哪保存。这次把查到的方法总结在这里。 1.WinR调出运行框 2.输入以下内容后回车 C:\Users\你的用户名\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets3.得到的…

Fiddler抓取手机https包的步骤

做接口测试时&#xff0c;有时我们需要使用fiddler进行抓包分析&#xff0c;那么如何抓取https包。主要分为以下七步&#xff1a; 1.设置fiddler选项&#xff1a;Tools->Options,按如下图勾选 2.下载并安装Fiddler证书生成器 下载地址&#xff1a;http://www.telerik.com/…

Python脚本实现xss攻击

实验环境&#xff1a;zd靶场、vscode 知识点 requests.session() 首先我们需要先利用python requests模块进行登录&#xff0c;然后利用开启session记录&#xff0c;保持之后的操作处于同一会话当中 requests.session()用于创建一个会话(session)的实例对象。使用requests库…

spark ui 指南

spark ui 指南 1.sparkUI 基本介绍2.jobs页面3.stages 页面4.storage 页面5.environment 页面6.ececutor 页面7 sql 页面  spark ui 是反应一个spark 作业执行情况的页面,通过查看作业的执行情况,分析作业运行的状态. 1.sparkUI 基本介绍 进入运行主页面如下,主要有6各部…

毛玻璃跟随鼠标移动

效果展示 页面结构组成 从上述的效果图可以看出&#xff0c;此页面的布局比较简单&#xff0c;采用常规的布局就可以实现 CSS / JavaScript 知识点 backdrop-filter 属性回顾mousemove 事件 实现页面布局 <section><h2>Frosted Glass</h2><div class…

【STL】用一棵红黑树封装map和set

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

各位CSDN的uu们你们好呀&#xff0c;今天依旧是小雅兰的51单片机的内容&#xff0c;内容主要是&#xff1a;独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位&#xff0c;下面&#xff0c;让我们进入51单片机的世界吧&#xff01;&a…

【探索排序算法的魅力:优化、性能与实用技巧】

本章重点 排序的概念及其运用 常见排序算法的实现 排序算法复杂度及稳定性分析 1.排序的概念及其运用 1.1排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性…

Edge扩展插件推荐专业视频下载器

专业视频下载器&#xff0c;这款扩展插件非常好用&#xff0c;强烈推荐。只要能打开的视频&#xff0c;都能下载。 安装完成是这样的&#xff1a; 有用记得点赞。

编程前置:怎么知道一句话的重点?

怎么知道一句话的重点&#xff1f; <small> 之所以要这个问题&#xff0c;是因为① 对标题进行分词 ② 找到标题中的重点词 ③ 然后找到主题中唯一的词语 ④ 然后对这个词语进行绘图说和看&#x1f440;来看&#x1f440;去&#xff0c;也就是文字成图的步骤啦&#xff…

Linux作业2

Linux中的 stdin 、stderr、stdout分别是什么意思 在 Linux 中&#xff0c;stdin、stdout 和 stderr 是标准的输入、标准的输出和标准的错误的缩写&#xff0c;它们是与终端相关联的默认文件描述符&#xff0c;用于处理输入和输出。以下是它们的详细含义&#xff1a; stdin&am…

日期范围搜索

1.日期范围选择界面 <?xml version"1.0" encoding"utf-8"?> <ScrollViewandroid:layout_width"fill_parent"android:layout_height"fill_parent"xmlns:android"http://schemas.android.com/apk/res/android">…

构建一个TypeScript环境的node项目

本文 我们用一种不太一样的方式来创建项目 这里 我们事先创建了一个文件夹作为项目目录 然后打开项目终端 输入 npm init然后 在新弹出的对话框中 大体就是 名字随便写一个 然后 后面的回车&#xff0c;到最后一个输入 yes 然后回车 这样 我们就有一个基础的 node项目结构了…