JLabel

2018-01-09 19:23 更新

Java Swing教程 - JLabel


JLabel 表示標(biāo)簽,即用于不可編輯的文本的顯示區(qū)域。

JLabel 可以顯示文本和圖像。它甚至可以渲染HTML標(biāo)簽,以便您可以創(chuàng)建一個顯示多色或多行文本的 JLabel 。

JLabel 可以顯示文本和圖像。它甚至可以渲染HTML標(biāo)簽,以便您可以創(chuàng)建一個顯示多色或多行文本的 JLabel 。...

public JLabel ()
public JLabel (java.lang.String text)
public JLabel (java.lang.String text, int horizontalAlignment)
public JLabel (Icon image)
public JLabel (Icon image, int horizontalAlignment)
public JLabel (Java.lang.String text, Icon icon, int horizontalAlignment)
 

horizontalAlignment的值為以下值之一:

  • SwingConstants.LEFT
  • SwingConstants.CENTER
  • SwingConstants.RIGHT
  • SwingConstants.LEADING
  • SwingConstants.TRAILING

horizontalAlignment的值為以下值之一:...

以下代碼顯示了如何創(chuàng)建JLabel的一些示例。

從字符串創(chuàng)建JLabel

JLabel nameLabel  = new JLabel("Name:");

顯示圖像ok.gif

JLabel warningImage  = new JLabel(new Icon("C:/images/ok.gif"));

setText()方法設(shè)置JLabel的文本。

JLabel子類用作每個JList的默認(rèn)渲染器,JComboBox,JTable和JTree組件。

import java.awt.FlowLayout;
/*ww  w  . j a v a2  s.  c om*/
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
  public static void main(String args[]) {
    JFrame f = new JFrame("Label Demo");
    f.setLayout(new FlowLayout());
    f.setSize(300, 200);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    JLabel label= new JLabel("o2fo.com");
    f.add(label);
    f.setVisible(true);
  }
}


助記鍵

set Displayed Mnemonic()方法為JLabel設(shè)置鍵盤助記符。鍵盤助記符字符帶有下劃線,為用戶提供提示。

setLabelFor()方法接受對另一個組件的引用,它指示此JLabel描述該組件。

當(dāng)按下JLabel的助記鍵時,焦點設(shè)置為在setLabelFor()方法中使用的組件。

在下面的代碼中,JLabel的助記符設(shè)置為字符N.當(dāng)用戶按Alt + N時,焦點將設(shè)置為JTextField。

import java.awt.BorderLayout;
// w  w w  . j  a va  2  s  .  co m
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JFrame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField nameTextField = new JTextField();
    JLabel nameLabel = new JLabel("Name:");
    nameLabel.setDisplayedMnemonic("N");
    nameLabel.setLabelFor(nameTextField);

    frame.add(nameLabel, BorderLayout.WEST);
    frame.add(nameTextField, BorderLayout.CENTER);

    frame.pack();
    frame.setVisible(true);
  }
}


多行標(biāo)簽(HTML)

多行標(biāo)簽(HTML)

import javax.swing.JFrame;
import javax.swing.JLabel;
/*from   www .j  a v  a  2 s  .c o  m*/
public class Main {

  public static void main(String[] a) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label = new JLabel("<html>bold <br> plain</html>");
    frame.add(label);

    frame.setSize(300, 200);
    frame.setVisible(true);
  }

}

如果將HTML標(biāo)記傳遞給JLabel上的setText方法,則標(biāo)記必須以“< html>"開頭 并以“< / html>"結(jié)尾。

文本對齊

我們可以在Swing標(biāo)簽中控制文本對齊。

下面的代碼為垂直和水平到中心。

label.setHorizontalAlignment(JLabel.CENTER);
label.setVerticalAlignment(JLabel.CENTER);

完整的源代碼

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
//from   w  w w.ja v  a  2s .com
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;

public class Main {
  public static void main(String args[]) {
    JFrame f = new JFrame("Label Demo");
    f.setLayout(new FlowLayout());
    f.setSize(300, 200);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    JLabel label= new JLabel("o2fo.com");
    Border border = BorderFactory.createLineBorder(Color.BLACK);
    label.setBorder(border);
    label.setPreferredSize(new Dimension(150, 100));
    
    label.setText("Centered");
    label.setHorizontalAlignment(JLabel.CENTER);
    label.setVerticalAlignment(JLabel.CENTER);
    f.add(label);
    f.setVisible(true);
  }
}

完整的源代碼...

JLabel label = new JLabel("Text Label", JLabel.CENTER);

標(biāo)簽圖標(biāo)

JLabel還可以顯示圖標(biāo)并提供圖形信息用戶。

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/* w w w.j a  va  2  s . c o m*/
public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JLabel Test");

    frame.setSize(300, 200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    ImageIcon imageIcon = new ImageIcon("icon.gif");
    JLabel label = new JLabel(imageIcon);

    frame.add(label);
    frame.setVisible(true);
  }
}

JLabel還可以顯示圖標(biāo)并提供圖形信息用戶。...

JLabel label = new JLabel("Mixed", imageIcon, SwingConstants.RIGHT);

標(biāo)簽字體

JLabel可以更改文本字體。 以下代碼從Font構(gòu)造函數(shù)創(chuàng)建一個新字體并將創(chuàng)建的字體設(shè)置為JLabel。

import java.awt.Color;
import java.awt.Font;
//  www .j av a2  s . c o m
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JLabel Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel label = new JLabel("First Name");
    label.setFont(new Font("Courier New", Font.ITALIC, 18));
    label.setForeground(Color.RED);

    frame.add(label);
    frame.pack();
    frame.setVisible(true);
  }
}

JLabel助記鍵

以下代碼顯示如何使用JLabel來顯示另一個組件的助記符。

以下代碼顯示如何使用JLabel來顯示另一個組件的助記符。...

JLabel助記鍵用下劃線顯示,用戶可以聚焦目標(biāo)控制通過按Alt鍵+助記字母。

import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
//from   w  ww. j a  v a 2s . co m
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Main {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Label Focus Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    JLabel label = new JLabel("Name: ");
    label.setDisplayedMnemonic(KeyEvent.VK_N);
    
    JTextField textField = new JTextField();
    label.setLabelFor(textField);
    
    frame.add(label, BorderLayout.WEST);
    frame.add(textField, BorderLayout.CENTER);

    frame.add(new JButton("Somewhere Else"), BorderLayout.SOUTH);
    frame.setSize(250, 100);
    frame.setVisible(true);
  }
}

禁用JLabel

import java.awt.FlowLayout;
//from  ww  w.  j a  v a 2  s.co m
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
  public static void main(String args[]) {
    JFrame f = new JFrame("Label Demo");
    f.setLayout(new FlowLayout());
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label= new JLabel("o2fo.com");
    label.setEnabled(false);

    f.add(label);
    f.pack();
    f.setVisible(true);
  }
}

JLabel Unicode

import java.awt.GridLayout;
//from ww w  .j av  a 2 s.com
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
  public static void main(String args[]) {
    UnicodeJFrame unicodeJFrame = new UnicodeJFrame();
    unicodeJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    unicodeJFrame.setSize(350, 250);
    unicodeJFrame.setVisible(true);
  } 
}

class UnicodeJFrame extends JFrame {
  public UnicodeJFrame() {
    super("Demonstrating Unicode");

    setLayout(new GridLayout(8, 1));

    JLabel englishJLabel = new JLabel("\u0057\u0065\u006C\u0063"
        + "\u006F\u006D\u0065\u0020\u0074\u006F\u0020Unicode\u0021");
    englishJLabel.setToolTipText("This is English");
    add(englishJLabel);

    JLabel chineseJLabel = new JLabel("\u6B22\u8FCE\u4F7F\u7528" + "\u0020\u0020Unicode\u0021");
    chineseJLabel.setToolTipText("This is Traditional Chinese");
    add(chineseJLabel);

    JLabel cyrillicJLabel = new JLabel("\u0414\u043E\u0431\u0440"
        + "\u043E\u0020\u043F\u043E\u0436\u0430\u043B\u043E\u0432"
        + "\u0430\u0422\u044A\u0020\u0432\u0020Unicode\u0021");
    cyrillicJLabel.setToolTipText("This is Russian");
    add(cyrillicJLabel);

    JLabel frenchJLabel = new JLabel("\u0042\u0069\u0065\u006E\u0076"
        + "\u0065\u006E\u0075\u0065\u0020\u0061\u0075\u0020Unicode\u0021");
    frenchJLabel.setToolTipText("This is French");
    add(frenchJLabel);

    JLabel germanJLabel = new JLabel("\u0057\u0069\u006C\u006B\u006F"
        + "\u006D\u006D\u0065\u006E\u0020\u007A\u0075\u0020Unicode\u0021");
    germanJLabel.setToolTipText("This is German");
    add(germanJLabel);

    JLabel japaneseJLabel = new JLabel("Unicode\u3078\u3087\u3045" + "\u3053\u305D\u0021");
    japaneseJLabel.setToolTipText("This is Japanese");
    add(japaneseJLabel);

    JLabel portugueseJLabel = new JLabel("\u0053\u00E9\u006A\u0061"
        + "\u0020\u0042\u0065\u006D\u0076\u0069\u006E\u0064\u006F\u0020" + "Unicode\u0021");
    portugueseJLabel.setToolTipText("This is Portuguese");
    add(portugueseJLabel);

    JLabel spanishJLabel = new JLabel("\u0042\u0069\u0065\u006E"
        + "\u0076\u0065\u006E\u0069\u0064\u0061\u0020\u0061\u0020" + "Unicode\u0021");
    spanishJLabel.setToolTipText("This is Spanish");
    add(spanishJLabel);
  } 
}

JLabel看和感覺

JLabel助記鍵用下劃線顯示,用戶可以聚焦目標(biāo)控制通過按Alt鍵+助記字母。...

屬性字符串 對象類型
Label.actionMap ActionMap
Label.background Color
Label.border Border
Label.disabledForeground Color
Label.disabledShadow Color
Label.font Font
Label.foreground Color
LabelUI String

JLabel邊框

JLabel label= new JLabel("A default label");
Border border = BorderFactory.createLineBorder(Color.BLACK);
label.setBorder(border);

JLabel拖放

向JLabel組件添加拖放支持

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/*w w  w  .j a va 2 s . c o m*/
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.TransferHandler;

public class Main {
  public static void main(String[] argv) throws Exception {
    JLabel label = new JLabel("Label Text");

    final String propertyName = "text";
    label.setTransferHandler(new TransferHandler(propertyName));

    label.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent evt) {
        JComponent comp = (JComponent) evt.getSource();
        TransferHandler th = comp.getTransferHandler();

        th.exportAsDrag(comp, evt, TransferHandler.COPY);
      }
    });
  }
}

自定義JLabel

向JLabel組件添加拖放支持...

import java.awt.Graphics;
import java.awt.Rectangle;

import javax.swing.JLabel;

class UnderlinedLabel extends JLabel {
  public UnderlinedLabel() {
    this("");
  }

  public UnderlinedLabel(String text) {
    super(text);
  }

  public void paint(Graphics g) {
    Rectangle r;
    super.paint(g);
    r = g.getClipBounds();
    g.drawLine(0, r.height - getFontMetrics(getFont()).getDescent(), getFontMetrics(getFont())
        .stringWidth(getText()), r.height - getFontMetrics(getFont()).getDescent());
  }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號