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:\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"; // 實例化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操作,會更加方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM