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


    文章目录


    前言

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


    一、JLabel标签的使用

    1.介绍

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

            语法:

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

            常用的构造方法:

    1. new JLabel(); 
    2. //创建一个不带图标和文本的JLabel对象
    3. new JLabel(Icon icon); 
    4. //创建一个带图标的JLabel对象 
    5. new JLabel(Icon icon , int aligment); 
    6. //创建一个带图标,并且设置了图标水平对齐方式的JLabel对象
    7. new JLabel(String text , int aligment);
    8. //创建一个带文本,并且设置了文本水平对齐方式的JLabel对象 
    9. new JLabel(String text , Icon icon , int aligment);
    10. //创建一个带文本、带图标,并且设置标签内容水平对齐方式的JLabel对象            

    2.实例展示

    1. import java.awt.*;
    2. import javax.swing.*;
    3. //导入Swing程序的包
    4. public class LabelDemo extends JFrame{
    5. //继承导入包中的JFrame窗体类,创建窗体
    6. public LabelDemo(){
    7. //创建构造方法,对象为 LabelDemo() ,可在此方法中对此对象进行代码操作
    8. setBounds(100,100,100,100);
    9. //设置窗体的大小,生成位置
    10. setDefaultCloseOperation(EXIT_ON_CLOSE);
    11. //设置窗体的关闭方式
    12. Container c = getContentPane();
    13. //获取该窗体的容器
    14. JLabel a = new JLabel("这是一个标签", null, SwingConstants.CENTER);
    15. //创建一个Jlabel对象,设置好文本,图标未设置,对齐方式为居中
    16. c.add(a);
    17. //容器中添加JLabel组件
    18. setVisible(true);
    19. //设置为窗体可视化
    20. }
    21. public static void main(String[] args) {
    22. new LabelDemo();
    23. }
    24. }

             运行结果:

    二、JLabel中绘图和导入图片

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

    1.自定义绘图

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

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

    1. public int getIconWidth();
    2. //用于获取图标的宽
    3. public int getIconHeight();
    4. //用于获取图标的高
    5. public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3);
    6. //用于实现在指定坐标下位置进行绘制图标

            实例展示:

    1. import javax.swing.*;
    2. import java.awt.*;
    3. //导入swing包,awt包
    4. public class Demo extends JFrame implements Icon{
    5. /*Swing包中的Icon接口:可以自定义图标,用于绘图,创建时确定图标的大小、颜色等特性
    6. Icon接口中的要实现的三个抽象方法:
    7. 1. public int getIconHeigth() 方法: 用于获取图标的宽
    8. 2. public int getIconWidth() 方法:用于获取图标的高
    9. 3. public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3) 方法: 用于实现在指定坐标位置画图
    10. */
    11. private static int width; //设置了图标的宽(全局变量)
    12. private static int height; //设置了图标的高(全局变量)
    13. public int getIconWidth(){
    14. //实现Icon接口中的抽象方法 getIconWidth()
    15. return this.width;
    16. }
    17. public int getIconHeight(){
    18. //实现Icon接口中的抽象方法 getIconHeight()
    19. return this.height;
    20. }
    21. public void paintIcon(Component arg0, Graphics arg1, int x, int y){
    22. //实现Icon接口中的抽象方法 paintIcon()
    23. arg1.fillOval(x, y, width, height);
    24. //在指定的矩形区域内绘制一个填充的椭圆形,宽和高分别为width和heigth
    25. // arg1.fill3DRect(arg3, arg3, arg2, arg3, false); 绘制一个3D矩形
    26. // arg1.fillArc(arg3, arg3, arg3, arg3, arg2, arg3); 绘制一个弧形
    27. // arg1.fillPolygon(null, null, arg3); 绘制一个多边形
    28. // arg1.fillRect(arg3, arg3, arg2, arg3); 绘制一个矩形
    29. // arg1.fillRoundRect(arg3, arg3, arg3, arg3, arg2, arg3); 绘制一个圆角矩形
    30. }
    31. public Demo(int width,int height){ //定义构造方法
    32. this.height = height;
    33. this.width = width;
    34. //通过构造方法,实例化对象赋值,设置图标的宽和高
    35. }
    36. public static void main(String[] args) {
    37. Demo icon = new Demo(15,15);
    38. //创建Demo对象icon图标,宽为15像素,高为15像素
    39. JLabel jl = new JLabel("测试",icon, SwingConstants.CENTER);
    40. //设置了标签的文本,图标,及其水平对齐方式
    41. JFrame jf = new JFrame("绘图");
    42. //创建了一个窗体对象
    43. Container c = jf.getContentPane();
    44. //获取窗体容器
    45. c.add(jl);
    46. //添加标签组件
    47. jf.setBounds(100, 100, 200, 200);
    48. //设置窗体生成位置和大小
    49. jf.setVisible(true);
    50. //窗体可视化
    51. }
    52. }

            输出结果:

    2.导入图片

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

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

    答:导入java.net.URL;

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

             常用的构造方法:

    1. new ImageIcon();
    2. /*创建一个通用的ImageIcon图像图标对象,
    3. 需要显示该图片时,
    4. 对标签对象使用 setImage(Image image) 方法来操作
    5. */
    6. new ImageIcon(Image image);
    7. //直接从图片源中创建图标
    8. new ImageIcon(Image image,String description);
    9. //直接从图片源中创建图标,并且未突变添加简短描述,不会显示可以使用getDescription()方法获取该描述
    10. new ImageIcon(URL url);
    11. //通过路径,利用位于计算机网络上的图像文件创建图标

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

             实例展示:

    1. import javax.swing.*;
    2. import java.awt.*;
    3. //导入Swing程序的包
    4. import java.net.URL;
    5. //导入获取资源定位URL的包
    6. public class Example extends JFrame{
    7. public Example() {
    8. setTitle("项目1");
    9. //设置父窗体标题
    10. Container container = getContentPane();
    11. //获取容器
    12. JLabel jl = new JLabel("这是一个java图片",JLabel.CENTER);
    13. //创建一个标签,设置好标签内容,水平对齐方式
    14. URL url = Example.class.getResource("java.png");
    15. //getResource方法中输入图片的相对路径,获取"java.png"图片文件所在的URL路径,赋值给 url路径对象
    16. Icon icon = new ImageIcon(url);
    17. //url路径对象 实例化成一个Icon图标对象,ImageIcon类实现了Icon接口的所有抽象方法,跳过了自定义图标的步骤
    18. jl.setIcon(icon);
    19. //为标签设置图片
    20. container.add(jl);
    21. //将标签添加到容器中
    22. setBounds(100, 100, 600, 600);
    23. //设置窗体大小
    24. setVisible(true);
    25. //使窗体可见
    26. setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    27. //设置关闭方式
    28. }
    29. public static void main(String[] args) {
    30. new Example();
    31. }
    32. }

            运行结果:

     


    总结

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

  • 相关阅读:
    docker(五)构建私有仓库
    LNMP服务
    后台交互-首页->与后台数据进行交互,wsx的使用
    文生图的最新进展:从一致性模型CMs、LCM、SDXL到Stable Diffusion3、SDXL-Lightning
    FPGA:什么是流水线?流水线用在哪?
    神经网络画图与图片格式svg转换为jpg或png
    Golang指针隐式间接引用
    Java面试题总结(三)
    ​LeetCode解法汇总2525. 根据规则将箱子分类
    Nginx + keepalived 实现高可用 + 防盗链 + 动静分离
  • 原文地址:https://blog.csdn.net/weixin_74141222/article/details/133050622