Java GUI编程4---标签组件JLabel

article/2025/9/12 5:04:49

1. 认识JLabel

JLabel组件表示的是一个标签,本身是用于显示信息的,一般情况下是不能直接更改器显示内容的。创建完的Label对象可以通过Container类中的add()方法,加入到容器中,JLabel类的常用方法和常量如下表所示。

序号常量描述
1public static final int LEFT标签文本左对齐
2public static final int CENTER标签文本居中对齐
3public static final int RIGHT标签文本右对齐
序号方法描述
1public JLabel() throws HeadlessException创建一个JLabel对象
2public JLabel(String text) throws HeadlessException创建一个标签并制定文本内容,默认左对齐
3public Label(String text,int alignment) throws HeadlessException创建一个标签并制定文本内容以及对齐方式,可以使用JLable.LEFT,JLabel.RIGHT,JLabel.CENTER这三个值
4public JLabel(String text,Icon icon,int horizontalAlignment)创建具有指定文本,图像,水平对齐方式的JLabel对象
5public JLabel(Icon image,int horizontalAlignment)创建具有制定图形和水平对齐方式的JLabel实例
6public void setText(String text)设置标签的文本
7public String getText()获取标签文本
8public void setAlignment(int alignment)设置标签的对齐方式
9public void setIcon(Icon icon)设置指定的图像

实例:使用一个标签

import java.awt.Color ;
import java.awt.Dimension;
import java.awt.Point ;
import javax.swing.JLabel ;
import javax.swing.JFrame ;
public class JLabelDemo01{public static void main(String args[]){JFrame frame = new JFrame("JLable Test") ;JLabel lab = new JLabel("我是一个标签",JLabel.CENTER) ;   // 实例化标签对象frame.add(lab) ;    // 将组件件入到面板之中frame.setBackground(Color.WHITE) ;//设置窗体的背景颜色Dimension dim = new Dimension() ;dim.setSize(400,200) ;              //窗体的大小frame.setSize(dim) ;                //设置窗体大小Point point = new Point(500,100) ;  // 设置坐标frame.setLocation(point) ;          //设置窗体坐标frame.setVisible(true) ;            //设置窗体可见}
}

运行结果:
标签中放入文本
如果要在上面的代码中体现出容器的概念,可以直接通过JFrame中的getContentPane()取得窗口的Container对象,并在此对象中加入组件。
修改后的代码如下:

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Point ;
import javax.swing.JLabel ;
import javax.swing.JFrame ;
public class JLabelDemo001{public static void main(String args[]){JFrame frame = new JFrame("JLable Test") ;Container container=frame.getContentPane();  //取得当前窗体的容器JLabel lab = new JLabel("我是一个标签",JLabel.CENTER) ;   // 实例化标签对象container.add(lab) ;                // 将组件件入到窗体的容器中Dimension dim = new Dimension() ;dim.setSize(400,200) ;              //窗体的大小frame.setSize(dim) ;                //设置窗体大小Point point = new Point(500,100) ;  // 设置坐标frame.setLocation(point) ;          //设置窗体坐标frame.setVisible(true) ;            //设置窗体可见}
}

运行结果和上面的运行结果一样

2.更改JLable的文字样式

以上的标签内容只是使用了默认的字体和颜色显示,如果现在要更改使用的字体,则可以直接使用Component类中定义的一下方法:

public void setFont(Font f)

在设置是使用java.awt.Font类来表示字体,Front类常用的操作方法及常量如下表所示:

序号方法或常量类型描述
1public static final int BOLD常量文字显示为粗体
2public static final int ITALIC常量文字显示风格为斜体
3public static final int PLAIN常量文字显示风格为普通样式
4public Font(String name,int style,int size)构造方法实例化对象,指定显示风格和大小
5public String getFontName()普通成员方法得到字体的名称

实例:设置标签的显示字体,大小,背景颜色

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JFrame;
public class JLabelDemo02
{public static void main(String args[]){JFrame frame = new JFrame("更改JLable的文字样式");// 实例化标签对象,文本左对齐JLabel lab = new JLabel("标签中的文字", JLabel.LEFT); //创建Font对象 使用Serief字体,显示风格为斜体Font.ITALIC,加粗Font.BOLD,字号大小为28Font fnt = new Font("Serief", Font.ITALIC + Font.BOLD, 30);lab.setFont(fnt);                   //设置标签中的字体lab.setForeground(Color.BLUE);      //设置标签中的文字颜色frame.add(lab);                     // 将组件件入到面板之中frame.getContentPane().setBackground(Color.PINK);//设置窗体背景颜色Dimension dim = new Dimension();    //初始化窗体大小dim.setSize(400, 200);frame.setSize(dim);                 //设置窗体大小Point point = new Point(500, 100);  //初始化坐标点frame.setLocation(point);           //设置窗体位置frame.setVisible(true);}
}

运行结果:

更改标签中的文字样式

获取本机中的全部字体

如果想取得本机的全部字体该怎么办呢?—-可以使用GraphicsEnvironment类完成
java.awt.GraphicsEnvironment可以返回本机的全部绘图设备和全部字体的集合,该类是抽象类,要想实例化对象,直接使用类中的getLocalGraphicsEnvironment()方法即可,之后通过getAvailableFontFamilyNames()方法就可取得全部的可用字体,代码如下。
实例:取得本机中的全部可用字体

import java.awt.GraphicsEnvironment;
public class GetAllFonts
{public static void main(String args[]){GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment();String fontNames[] = eq.getAvailableFontFamilyNames();for (int x = 0; x < fontNames.length; x++){System.out.println(fontNames[x]);}}
}

运行结果,这里太多了,只输出部分。其他的省略掉:

Agency FB
Algerian
Arial
//太多了省略...
Consolas
//太多了省略...
Times New Roman
//太多了省略...
仿宋
//太多了省略...
隶书
黑体

在JLabel中设置图片

将一个图片设置到JLabel中也是可以的,直接使用Icon接口以及ImageIcon子类即可,在ImageIcon中可以使用如下表的构造方法,将图片的数据已byte数组的形式设置到JLabel上去。

序号方法类型描述
1public ImageIcon(byte[] imageData)构造方法将保存图片信息的byte数组设置到ImageIcon中
2public ImageIcon(String filename)构造方法通过文件名称创建ImageIcon对象
3public ImageIcon(String finame,String description)构造方法设置图片路径以及图片的简单描述

下面先来看第一个构造方法的使用,如果要从一个图像文件中取得字节数组,那就要使用InputStream类来完成操作。

实例代码: 在标签上设置图像

package java1.awt.jlable;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.Icon;
import javax.swing.ImageIcon;
public class JLabelDemo03
{public static void main(String args[]){JFrame frame = new JFrame("在JLabel标签上设置图片");//指定图片的路径String picPath = "C:\\Users\\Administrator\\Desktop\\蓝精灵.jpg";File file = new File(picPath);              // 实例化File类的对象InputStream input = null;byte b[] = new byte[(int) file.length()];   //根据图片大小设置字节数组的长度try{input = new FileInputStream(file);      //实例化文件字节输入流input.read(b);                          //从图片中读取字节到字节数组中input.close();                          //关闭文件流} catch (Exception e){e.printStackTrace();}Icon icon = new ImageIcon(b);               //使用字节数组,实例化ImageIcon对象// 实例化标签对象:带图片,居中对齐JLabel lab = new JLabel("带图片的标签", icon, JLabel.CENTER); //设置字体,隶书,斜体,加粗,字号为28Font fnt = new Font("宋体", Font.ITALIC + Font.BOLD, 28);//设置标签中的字体lab.setFont(fnt);//这个标签中自字体的颜色lab.setForeground(Color.BLUE);//设置标签背景颜色lab.setOpaque(true);lab.setBackground(Color.PINK);//把标签添加到面板中frame.add(lab); // 将组件件入到面板之中// 设置窗体的背景颜色frame.getContentPane().setBackground(Color.WHITE);//设置窗口宽度和高度Dimension dim = new Dimension();dim.setSize(800,600 );frame.setSize(dim);//设置窗体的坐标Point point = new Point(100, 100); // 设置坐标frame.setLocation(point);frame.setVisible(true);}
}

运行效果:
这里写图片描述

为jlabel设置背景颜色

jlabel默认是透明的,所以默认情况下对其设置背景色是不管用的。
但是这样就可以更改其背景颜色:

jlabel.setOpaque(true);
jlabel.setbackground(color.black);

出处:https://blog.csdn.net/mr_pang/article/details/47449495
如果使用一个IO流来进行图片读取带设置JLabel显示图形太麻烦,则可以直接将一个图形的路径传递到ImageIcon的实例化中,并使用JLabel类中对应的构造方法即可。

实例:使用图像路径实例化ImageIcon

图片:

用到的图片
位置:C:\Users\Administrator\Desktop\蓝精灵_Jc.jpg;

import java.awt.Dimension;
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.Icon;
import javax.swing.ImageIcon;
public class JLabelDemo04
{public static void main(String args[]){JFrame frame = new JFrame("通过图像路径实例化JLabel");// 指定图片路径String picPath = "C:\\Users\\Administrator\\Desktop\\蓝精灵_Jc.jpg";// 实例化ImageIconIcon icon = new ImageIcon(picPath);// 实例化标签对象JLabel lab = new JLabel("通过图片路径来设置JLabel", icon, JLabel.CENTER);// 初始化字体Font fnt = new Font("Serief", Font.ITALIC + Font.BOLD, 16);// 标签设置字体lab.setFont(fnt);// 这种标签字体颜色lab.setForeground(Color.RED);// 设置标签背景颜色lab.setOpaque(true);lab.setBackground(Color.PINK);//把标签放到面板中frame.add(lab); Dimension dim = new Dimension();dim.setSize(500, 300);frame.setSize(dim);Point point = new Point(100, 100); // 设置坐标frame.setLocation(point);frame.setVisible(true);}
}

运行结果:
运行结果

上面两种设置图片的方法都能试想效果,如果图像是从一个不确定的输入流(如数据库中读)中而来的,则使用使用第一中方法。如果图片是从文件中获取的,使用第二中方式,少了IO操作,会更加方便。


http://chatgpt.dhexx.cn/article/lQBH1PiE.shtml

相关文章

JLabel标签较为常见部分的使用方法

本篇文章将会教会大家如何使用JLabel 1添加JLabel //创建一个标签 JLabel jLabel new JLabel("Hi,我是标签"); //添加到面板 Jpanel1.add(jLabel); //将面板添加到窗口 jFrame.add(Jpanel1);2设置文本颜色 //设置文本颜色 jLabel.setForeground(Color.green);3设…

Java基础-JLable组件、文本框组件、JPanel轻量级容器、Swing事件处理三种方式、适配器

1、JLable标签组件 标签是一种可以包含文本和图片的非交互组件&#xff0c;其文本可以是单行文本&#xff0c;也可以是 HTML 文本。对于只包含文本的标签可以使用 JLabel 类&#xff0c;该类的主要构造方法有如下几种形式。 JLabel()&#xff1a;创建无图像并且标题为空字符串…

06.JavaSwing(基础组件——JLabel类)

软件界面是软件和用户之间的交流平台&#xff0c;而组件则是绘制软件界面的基本元素&#xff0c;是软件和用户之间的交流要素。 一、概述 JLabel组件用来显示文本和图像&#xff0c;可以只显示其一种&#xff0c;也可以同时显示。JLabel类提供了一些列用来设置标签的方法。 二…

从DTW到DILATE---时序预测损失函数总结

时间序列预测损失函数 时间序列预测是指通过分析历史数据来预测未来数据的变化趋势。时间序列预测在许多领域都有着广泛的应用&#xff0c;例如金融、气象、交通等。为了能够准确预测未来数据&#xff0c;时间序列预测中损失函数的选择非常关键。损失函数的选择直接影响模型的…

DTW算法——matlab实现(二)

DTW算法——Matlab实现 本文只是简单的介绍DTW算法的目的和实现。具体的DTW可以参考一下文献&#xff1a; 离散序列的一致性度量方法&#xff1a;动态时间规整&#xff08;DTW&#xff09; http://blog.csdn.net/liyuefeilong/article/details/45748399 动态时间归整/规整/弯曲…

【时间序列】DTW算法详解

作者 | 追光者 研究 | 机器学习与时间序列 出品 | AI蜗牛车 1.DTW 1.1 时序相似度 在时间序列数据中&#xff0c;一个常见的任务是比较两个序列的相似度&#xff0c;作为分类或聚类任务的基础。那么&#xff0c;时间序列的相似度应该如何计算呢&#xff1f; “ 经典的时间序列相…

学习dtw-python库内容 动态弯曲距离(DTW)具体实现

文章目录 一、install 数据包二、函数功能三、函数的参数以及含义四、具体实现 一、install 数据包 简单的pip install一下就好了&#xff0c;注意最后提示Successfully installed dtw-python-1.3.0 pip install dtw-python二、函数功能 执行 DTW 算法&#xff0c;并计算两个…

DTW距离

DTW&#xff08;dynamic-time-wraping&#xff09; 当两个时间序列等长时&#xff0c;我们可以使用欧氏距离来度量两者的相似性。但是当两个时间序列不等长时&#xff0c;欧氏距离就难以度量两者的相似性了。因此&#xff0c;国外学者提出了动态时间弯曲距离(Dynamic time war…

【时间序列】动态时间规整(DTW)算法简介(python)

简介 动态时间规整&#xff1a;(Dynamic Time Warping&#xff0c;DTW) 定义&#xff1a;用于比较不同长度的两个数组或时间序列之间的相似性或计算两者间的距离。 例1&#xff1a;a [1,2,3],b[3,2,2] 例2&#xff1a;a[1,2,3],b[2,2,2,3,4] 例1好计算&#xff0c;但对于例2&am…

【积】fast-DTW及其代码详解

fast-DTW 在解说中适合一个单特征的时间序列&#xff0c;在附录中修改了距离函数从而适合多个特征的时间序列。且距离函数用的是L1距离。如果是其他距离函数&#xff0c;修改即可。 1. DTW常用的加速手段 1.1 限制 亦即减少D的搜索空间&#xff0c;下图中阴影部分为实际的探…

DTW算法(语音识别)

DTW主要是应用在孤立词识别的算法&#xff0c;用来识别一些特定的指令比较好用&#xff0c;这个算法是基于DP&#xff08;动态规划&#xff09;的算法基础上发展而来的。这里介绍语音识别就先介绍下语音识别的框架&#xff0c;首先我们要有一个比对的模版声音&#xff0c;然后需…

时间序列匹配之dtw的python实现(一)

简介 Dynamic Time Warping&#xff08;动态时间序列扭曲匹配&#xff0c;简称DTW&#xff09;是时间序列分析的经典算法&#xff0c;用来比较两条时间序列之间的距离&#xff0c;发现最短路径。笔者在github上搜索dtw时发现了两个比较经典的库&#xff1a;dtw和dtw-python。d…

Python dtw(dynamic time warping)模块

dtw是一个用于计算动态时间扭曲距离的python模块。它可以作为时间序列之间的相似性度量。 dtw模块官方文档&#xff1a;https://www.cnpython.com/pypi/dtw DTW(dynamic time warping)的基本思想&#xff1a; 参考链接&#xff1a;https://zhuanlan.zhihu.com/p/117634492

时间序列相似性度量-DTW

1. 背景 最近项目中遇到求解时间序列相似性问题&#xff0c;这里序列也可以看成向量。在传统算法中&#xff0c;可以用余弦相似度和pearson相关系数来描述两个序列的相似度。但是时间序列比较特殊&#xff0c;可能存在两个问题&#xff1a; 两段时间序列长度不同。如何求相似…

算法笔记-DTW动态时间规整

算法笔记-DTW动态时间规整 简介简单的例子定义讨论 约束条件步模式标准化点与点的距离函数 具体应用场景 分类点到点匹配 算法笔记-DTW动态时间规整 动态时间规整/规划(Dynamic Time Warping, DTW)是一个比较老的算法&#xff0c;大概在1970年左右被提出来&#xff0c;最早用…

DTW学习笔记1.0

目录 DTW算法的目的&#xff1a; DTW算法实现&#xff1a; 以下图两段序列为例&#xff1a; DTW代码实现&#xff1a; Dynamic programming function 示例&#xff1a; 单变量示例&#xff1a; 比较序列相似性示例&#xff1a; 缺点&#xff1a; DTW算法的目的&#xf…

动态时间规整—DTW算法

简述 Dynamic Time Warping&#xff08;DTW&#xff09;诞生有一定的历史了&#xff08;日本学者Itakura提出&#xff09;&#xff0c;它出现的目的也比较单纯&#xff0c;是一种衡量两个长度不同的时间序列的相似度的方法。应用也比较广&#xff0c;主要是在模板匹配中&#…

语音信号处理之(一)动态时间规整(DTW)

语音信号处理之&#xff08;一&#xff09;动态时间规整&#xff08;DTW&#xff09; zouxy09qq.com http://blog.csdn.net/zouxy09 这学期有《语音信号处理》这门课&#xff0c;快考试了&#xff0c;所以也要了解了解相关的知识点。呵呵&#xff0c;平时没怎么听课&#xff…

【机器学习】【DTW】

转自&#xff1a;https://blog.csdn.net/zouxy09/article/details/9140207 一、概述 在大部分的学科中&#xff0c;时间序列是数据的一种常见表示形式。对于时间序列处理来说&#xff0c;一个普遍的任务就是比较两个序列的相似性。 在时间序列中&#xff0c;我们通常需要比较…

动态时间规整算法: 从DTW到FastDTW

目录 动态时间规整算法: 从DTW到FastDTW总结&#xff1a;简介[^1]DTW[^1]FastDTW&#xff1a;使用多级粗化的方法[^1]结果 动态时间规整算法: 从DTW到FastDTW 总结&#xff1a; FastDTW作者对DTW的改进点很巧妙&#xff01;先通过举例说明在一些情况下目前现有的方法对DTW改进…