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操作,會更加方便。