Java swing jlabel text

Работаем с JLabel

JLabel это пожалуй самый простой компонент, который есть в Java Swing. С помощью JLabel можно показать текст с иконкой. Если нужен какой-то компонент, чтобы отобразить какое-то сообщение пользователю или сделать для поля ввода текстовую метку, или показать иконку — используем JLabel. Текст, который показывает JLabel выделять нельзя, только смотреть.

Для создания объекта JLabel, который затем будем располагать в окне, можно воспользоваться конструктором со строковым параметром public JLabel(String text). Строковый параметр — это текст, который будет показываться в JLabel. Кроме того текст, который будет отображаться в JLabel можно установить при помощи метода setText. Единственным параметром метода является строка отображаемого текста String.

JLabel позволяет настраивать шрифт, который будет использоваться для отображения текста. Установка шрифта происходит при помощи метода setFont класса JLabel. Этому методу в качестве параметра передается объект Font. Что мы хотим, когда указываем или создаем шрифт? Первое — это начертание, Verdana или Courier New, или другое. Второе — размер шрифта и третье — жирный будет шрифт или нормальный, или может быть курсив. Поэтому подходящий конструктор для Font это тот, который содержит сразу все три параметра — public Font(String name, int style, int size). Первый параметр, как уже ясно, это имя шрифта. Если параметр не задан, то используется шрифт по умолчанию. Второй параметр задает стиль — жирный, нормальный или курсив. Сюда необходимо передать одну из констант объекта Font — Font.BOLD (жирный), Font.PLAIN (нормальный или плоский) и Font.ITALIC (курсив). Ну и третий параметр — размер шрифта. Объект Font можно создать вот так:

Читайте также:  Replacing function in php

Font font = new Font(«Verdana», Font.PLAIN, 11);

После установки текста и шрифта у JLabel иногда бывает нужно определить выравнивание текста по вертикали и горизонтали. Делается это при помощи двух методов setVerticalAlignment и setHorizontalAlignment соответственно. В качестве параметров для setVerticalAlignment нужно использовать что-то из следующего списка: JLabel.TOP (выравнивать по верхнему краю), JLabel.CENTER (по центру) и JLabel.BOTTOM (выравнивание по нижнему краю). Для метода setHorizontalAlignment параметров больше — JLabel.LEFT (по левому краю), JLabel.CENTER (по центру), JLabel.RIGHT (по правому краю), JLabel.LEADING и JLabel.TRAILING. Интересны последние две константы. Для языков, у которых написание текста идет слева направа JLabel.LEADING — это левый край, а JLabel.TRAILING — правый. Для языков, у которых написание происходит справа налева, JLabel.LEADING — это правый край, а JLabel.TRAILING — левый.

JLabel позволяет отображать иконку вместе с текстом. Для установки иконки используется метод setIcon. Единственный параметр метода — это объект Icon. Когда задана иконка для JLabel, то можно задать расположение текста относительно иконки. Для этого используются методы setVerticalTextPosition и setHorizontalTextPosition. В качестве параметров используются те же константы, что и при выравнивании текста.

Идем дальше. Шрифт мы выбрали. Теперь нужно определить, какого цвета будет текст у нашего JLabel. Делается это при помощи метода setForeground. Сюда нужно передать объект Color. Для создания Color можно воспользоваться разными конструкторами или вместо этого воспользоваться константами, которые определены в объекте Color. Здесь есть черный Color.BLACK, зеленый Color.GREEN, красный Color.RED и другие. Если нужно создать какой-то специфический цвет, то придется воспользоваться конструктором. Для меня, например, самый удобный public Color(int red, int green, int blue). Передаем сюда необходимые составляющие цвета и получаем то, что хотели. Ну а затем устанавливаем цвет у JLabel.

Читайте также:  background-position

Кроме цвета шрифта можно задать цвет фона JLabel. Делается это с помощью метода setBackground. Интересный момент. По умолчанию, даже если цвет фона установлен, фон у JLabel не отображается. Для того, чтобы JLabel стал показывать фон необходимо вызвать метод setOpaque и передать туда true. Тем самым мы скажем JLabel, что хотим сделать непрозрачным его фон. Цвет фона задается аналогично цвету текста, то есть методу setBackground передается объект Color, который содержит информацию о цвете.

У JLabel, как и у других компонентов, можно устанавливать размеры. Делается это при помощи метода setPreferredSize. Сюда передается объект Dimension с требуемой шириной и высотой.

label.setPreferredSize(new Dimension(100, 100));

Еще одна особенность, про которую нужно обязательно рассказать — это использование HTML в качестве текста. К примеру, в тестовом приложении JLabel используется для того, чтобы показать краткое
описание Google Labs на английском языке.

По традиции тестовое приложение. Здесь я попытался продемонстрировать возможности на практике, о которых говорилось выше. На самой верхней панели можно увидеть результат работы с методами, устанавливающими выравнивание текста JLabel. Для того, чтобы было лучше видно выравнивание, я добавил к каждому JLabel черный border шириной в один пиксель. На средней панели — работа с позиционированием текста JLabel относительно иконки и наконец на самой нижней — использование HTML для отображения в JLabel текста. Внешний вид приложения представлен на рисунке ниже.

working_with_jlabel

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.border.Border; public class TestFrame extends JFrame < public static void createGUI() < JFrame frame = new JFrame("Test frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension labelSize = new Dimension(80, 80); Border solidBorder = BorderFactory.createLineBorder(Color.BLACK, 1); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); JPanel alignmentPanel = new JPanel(new FlowLayout()); alignmentPanel.setBorder(BorderFactory.createTitledBorder("Alignment")); Font font = new Font("Verdana", Font.PLAIN, 12); JLabel topLabel = new JLabel("Top"); topLabel.setVerticalAlignment(JLabel.TOP); topLabel.setHorizontalAlignment(JLabel.CENTER); topLabel.setPreferredSize(labelSize); topLabel.setBorder(solidBorder); topLabel.setFont(font); topLabel.setForeground(Color.GREEN); alignmentPanel.add(topLabel); font = new Font(null, Font.ITALIC, 13); JLabel bottomLabel = new JLabel("Bottom"); bottomLabel.setVerticalAlignment(JLabel.BOTTOM); bottomLabel.setHorizontalAlignment(JLabel.CENTER); bottomLabel.setPreferredSize(labelSize); bottomLabel.setBorder(solidBorder); bottomLabel.setFont(font); bottomLabel.setForeground(Color.RED); alignmentPanel.add(bottomLabel); JLabel leftLabel = new JLabel("Left"); leftLabel.setVerticalAlignment(JLabel.CENTER); leftLabel.setHorizontalAlignment(JLabel.LEFT); leftLabel.setPreferredSize(labelSize); leftLabel.setBorder(solidBorder); leftLabel.setForeground(Color.BLUE); alignmentPanel.add(leftLabel); font = new Font(null, Font.BOLD, 10); JLabel rightLabel = new JLabel("Right"); rightLabel.setVerticalAlignment(JLabel.CENTER); rightLabel.setHorizontalAlignment(JLabel.RIGHT); rightLabel.setPreferredSize(labelSize); rightLabel.setBorder(solidBorder); rightLabel.setForeground(Color.GRAY); rightLabel.setFont(font); alignmentPanel.add(rightLabel); font = new Font("Century Gothic", Font.BOLD, 14); JLabel centerLabel = new JLabel("Center"); centerLabel.setVerticalAlignment(JLabel.CENTER); centerLabel.setHorizontalAlignment(JLabel.CENTER); centerLabel.setPreferredSize(labelSize); centerLabel.setBorder(solidBorder); centerLabel.setFont(font); alignmentPanel.add(centerLabel); mainPanel.add(alignmentPanel, BorderLayout.NORTH); JPanel textPositionPanel = new JPanel(); textPositionPanel.setBorder( BorderFactory.createTitledBorder("Text position")); Icon icon = UIManager.getIcon("OptionPane.errorIcon"); JLabel textPosLeftTopLabel = new JLabel("LT"); textPosLeftTopLabel.setVerticalTextPosition(JLabel.TOP); textPosLeftTopLabel.setHorizontalTextPosition(JLabel.LEFT); textPosLeftTopLabel.setPreferredSize(labelSize); textPosLeftTopLabel.setBorder(solidBorder); textPosLeftTopLabel.setIcon(icon); textPositionPanel.add(textPosLeftTopLabel); icon = UIManager.getIcon("OptionPane.informationIcon"); JLabel textPosLeftBottomLabel = new JLabel("LB"); textPosLeftBottomLabel.setVerticalTextPosition(JLabel.BOTTOM); textPosLeftBottomLabel.setHorizontalTextPosition(JLabel.LEFT); textPosLeftBottomLabel.setPreferredSize(labelSize); textPosLeftBottomLabel.setBorder(solidBorder); textPosLeftBottomLabel.setIcon(icon); textPositionPanel.add(textPosLeftBottomLabel); icon = UIManager.getIcon("OptionPane.questionIcon"); JLabel textPosRightTopLabel = new JLabel("RT"); textPosRightTopLabel.setVerticalTextPosition(JLabel.TOP); textPosRightTopLabel.setHorizontalTextPosition(JLabel.RIGHT); textPosRightTopLabel.setPreferredSize(labelSize); textPosRightTopLabel.setBorder(solidBorder); textPosRightTopLabel.setIcon(icon); textPositionPanel.add(textPosRightTopLabel); icon = UIManager.getIcon("OptionPane.errorIcon"); JLabel textPosRightBottomLabel = new JLabel("RB"); textPosRightBottomLabel.setVerticalTextPosition(JLabel.BOTTOM); textPosRightBottomLabel.setHorizontalTextPosition(JLabel.RIGHT); textPosRightBottomLabel.setPreferredSize(labelSize); textPosRightBottomLabel.setBorder(solidBorder); textPosRightBottomLabel.setIcon(icon); textPositionPanel.add(textPosRightBottomLabel); icon = UIManager.getIcon("OptionPane.informationIcon"); JLabel textPosCenterLabel = new JLabel("Center top"); textPosCenterLabel.setVerticalTextPosition(JLabel.TOP); textPosCenterLabel.setHorizontalTextPosition(JLabel.CENTER); textPosCenterLabel.setPreferredSize(labelSize); textPosCenterLabel.setBorder(solidBorder); textPosCenterLabel.setIcon(icon); textPositionPanel.add(textPosCenterLabel); mainPanel.add(textPositionPanel, BorderLayout.CENTER); JPanel htmlPanel = new JPanel(); htmlPanel.setBorder(BorderFactory.createTitledBorder("HTML")); String text = "

What is Google Labs?

" + "" + " Google Labs is a playground
" + " where our more adventurous users can play around with
" + " prototypes of some of our wild and crazy ideas and
" + " offer feedback directly to the engineers who developed
" + " them. Please note that Labs is the first phase in
" + " a lengthy product development process and none of this
" + " stuff is guaranteed to make it onto Google.com.
" + " While some of our crazy ideas might grow into the
" + " next Gmail or iGoogle, others might turn out to be,
" + " well, just plain crazy."; font = new Font(null, Font.PLAIN, 10); JLabel htmlLabel = new JLabel(); htmlLabel.setText(text); htmlLabel.setFont(font); htmlPanel.add(htmlLabel); mainPanel.add(htmlPanel, BorderLayout.SOUTH); frame.getContentPane().add(mainPanel); frame.setPreferredSize(new Dimension(450, 485)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); > public static void main(String[] args) < javax.swing.SwingUtilities.invokeLater(new Runnable() < public void run() < JFrame.setDefaultLookAndFeelDecorated(true); createGUI(); >>); > >

Источник

JLabel basic tutorial and examples

Perhaps JLabel is the simplest Swing’s GUI component which simply renders a text message or an icon or both on screen. This article presents common practices when using JLabel in Swing development.

Table of content:

1. Creating a JLabel object

JLabel label = new JLabel("This is a basic label");

Image:
Create a label with empty text and set the text later:

JLabel label = new JLabel(); label.setText("This is a basic label");
JLabel label = new JLabel(new ImageIcon("images/attention.jpg"));

Image: This is the common way to display an image/icon in Swing.
Create a label with only an icon (the icon file is in the classpath or in a jar file):

String iconPath = "/net/codejava/swing/jlabel/Color.png"; Icon icon = new ImageIcon(getClass().getResource(iconPath)); JLabel label = new JLabel(icon);
JLabel label = new JLabel("A label with icon and text", new ImageIcon("images/attention.jpg"), SwingConstants.CENTER);

icon and text label

Image:
In this case, we can set the gap between the icon and the text as follows:

JLabel label = new JLabel("Enter first name:", SwingConstants.RIGHT); JLabel label = new JLabel(new ImageIcon("images/attention.jpg"), SwingConstants.LEFT);

2. Adding the label to a container

frame.add(label); dialog.add(label); panel.add(label); applet.getContentPane().add(label);
frame.add(label, BorderLayout.CENTER); panel.add(label, gridbagConstraints);

3. Customizing JLabel’s appearance

label.setFont(new java.awt.Font("Arial", Font.ITALIC, 16)); label.setOpaque(true); label.setBackground(Color.WHITE); label.setForeground(Color.BLUE);

Image: NOTE: by default, the label’s background is transparent, so if you want to set background, you have to set the label’s opaque property to true.
Instead of using the methods above, we can use HTML code to customize the label’s appearance. For example:

Image:

  • We also must you HTML code if we want to add line breaks in the label’s text. For example:
  • JLabel label = new JLabel("This label has 
    two lines
    ");

    Image:

    4. Labeling a component

    A JLabel is usually used for labeling a component such as a JTextField . If we want to allow the users accessing a text field using shortcut key (mnemonic), use the following code:

    JTextField textEmail = new JTextField(20); JLabel label = new JLabel("Enter e-mail address:"); label.setLabelFor(textEmail); label.setDisplayedMnemonic('E');

    labeling a text field

    Image:

    You can notice that the ‘E’ letter in the label in underlined, so the users can type Alt + E to get focus on the text field.

    5. JLabel demo program

    For reference, we created a Swing program that demonstrates various techniques mentioned when working with JLabel component. The program looks like this:

    JLabel demo program

    You can download the program’s source code in the attachment section.

    Other Java Swing Tutorials:

    About the Author:

    Nam Ha Minh is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.

    Источник

    JLabel basic tutorial and examples

    Perhaps JLabel is the simplest Swing’s GUI component which simply renders a text message or an icon or both on screen. This article presents common practices when using JLabel in Swing development.

    Table of content:

    1. Creating a JLabel object

    JLabel label = new JLabel("This is a basic label");

    Image:
    Create a label with empty text and set the text later:

    JLabel label = new JLabel(); label.setText("This is a basic label");
    JLabel label = new JLabel(new ImageIcon("images/attention.jpg"));

    Image: This is the common way to display an image/icon in Swing.
    Create a label with only an icon (the icon file is in the classpath or in a jar file):

    String iconPath = "/net/codejava/swing/jlabel/Color.png"; Icon icon = new ImageIcon(getClass().getResource(iconPath)); JLabel label = new JLabel(icon);
    JLabel label = new JLabel("A label with icon and text", new ImageIcon("images/attention.jpg"), SwingConstants.CENTER);

    icon and text label

    Image:
    In this case, we can set the gap between the icon and the text as follows:

    JLabel label = new JLabel("Enter first name:", SwingConstants.RIGHT); JLabel label = new JLabel(new ImageIcon("images/attention.jpg"), SwingConstants.LEFT);

    2. Adding the label to a container

    frame.add(label); dialog.add(label); panel.add(label); applet.getContentPane().add(label);
    frame.add(label, BorderLayout.CENTER); panel.add(label, gridbagConstraints);

    3. Customizing JLabel’s appearance

    label.setFont(new java.awt.Font("Arial", Font.ITALIC, 16)); label.setOpaque(true); label.setBackground(Color.WHITE); label.setForeground(Color.BLUE);

    Image: NOTE: by default, the label’s background is transparent, so if you want to set background, you have to set the label’s opaque property to true.
    Instead of using the methods above, we can use HTML code to customize the label’s appearance. For example:

    Image:

  • We also must you HTML code if we want to add line breaks in the label’s text. For example:
  • JLabel label = new JLabel("This label has 
    two lines
    ");

    Image:

    4. Labeling a component

    A JLabel is usually used for labeling a component such as a JTextField . If we want to allow the users accessing a text field using shortcut key (mnemonic), use the following code:

    JTextField textEmail = new JTextField(20); JLabel label = new JLabel("Enter e-mail address:"); label.setLabelFor(textEmail); label.setDisplayedMnemonic('E');

    labeling a text field

    Image:

    You can notice that the ‘E’ letter in the label in underlined, so the users can type Alt + E to get focus on the text field.

    5. JLabel demo program

    For reference, we created a Swing program that demonstrates various techniques mentioned when working with JLabel component. The program looks like this:

    JLabel demo program

    You can download the program’s source code in the attachment section.

    Other Java Swing Tutorials:

    About the Author:

    Nam Ha Minh is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.

    Источник

    Оцените статью