zoukankan      html  css  js  c++  java
  • Java GUI编程4---标签组件JLabel

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

    1. 认识JLabel

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

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

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

    序号方法或常量类型描述
    1 public static final int BOLD 常量 文字显示为粗体
    2 public static final int ITALIC 常量 文字显示风格为斜体
    3 public static final int PLAIN 常量 文字显示风格为普通样式
    4 public Font(String name,int style,int size) 构造方法 实例化对象,指定显示风格和大小
    5 public 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,字号大小为28
            Font 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上去。

    序号方法类型描述
    1 public ImageIcon(byte[] imageData) 构造方法 将保存图片信息的byte数组设置到ImageIcon中
    2 public ImageIcon(String filename) 构造方法 通过文件名称创建ImageIcon对象
    3 public 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); 
            //设置字体,隶书,斜体,加粗,字号为28
            Font 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);
    • 1
    • 2

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

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

    图片:

    用到的图片
    位置:C:UsersAdministratorDesktop蓝精灵_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";
            // 实例化ImageIcon
            Icon 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操作,会更加方便。

  • 相关阅读:
    C#:String.Format数字格式化输出
    System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
    How to debug windows service
    中文字符utf-8编码原则
    获取当前文件的绝对路径
    finfo_file
    usort 函数
    snmp 简单网管协议
    $this
    prinft he sprintf
  • 原文地址:https://www.cnblogs.com/yangf428/p/11066406.html
Copyright © 2011-2022 走看看