Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Institut Almatà – DAM – M3 – UF5 – Swing – JLabel

La clase JLabel

Amb la clase JLabel podem mostrar text i imateges o ambdós alhora.


Si el component ha de ser interactiu i tenir un cert estat, millor utilizar JButton.

Les etiquetes no són opaques per defecte. Això vol dir que si volem pintar el fons
(background) d’una etiqueta necessitarem primer fer-la opaca.
Label.setOpaque(true);

JLabel Constructors

Assume the following declarations.

String text;
Icon image;
int alignment; // JLabel.LEFT, JLabel.Center, or JLabel.RIGHT.

JLabel yourLabel = new JLabel(text);


JLabel yourLabel = new JLabel(text, alignment);
JLabel yourLabel = new JLabel(image);
JLabel yourLabel = new JLabel(image, alignment);
JLabel yourLabel = new JLabel(text, image, alignment);

Exemples:
JLabel idLabel = new JLabel("Enter your ID:", JLabel.RIGHT);

JLabel title = new JLabel("Want a Raise?", JLabel.CENTER);


title.setFont(new Font("Serif", Font.BOLD, 48));

JLabel title = new JLabel("Want a Raise?", JLabel.CENTER);


title.setForeground(Color.white);

Els mètodes per a canviar o accedir al text d’una JLabel són: setText() i getText().

Podem utilitzar HTML pel text de les etiquetes. Hem de posar davant de tot del text
<html>

Per posicionar el JLabel en una coordenada x,y cal utlitzar el mètode:


setLocation(int,int) el resultat dependrà del gestor (layout) que tingui el contenidor.

El següent codi mostra les possibilitats d’un component JLabel.


label.setVerticalTextPosition(JLabel.BOTTOM);
label.setHorizontalTextPosition(JLabel.CENTER);
label.setToolTipText(“text”);
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setForeground(new Color(0x0000ff));
label.setOpaque(true); //SI NO FEM AIXÒ NO PINTA EL FONS.
label.setBackground(Color.YELLOW);

Material d’APM. Pàgina 1 de 5


Institut Almatà – DAM – M3 – UF5 – Swing – JLabel

Exemple:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.ImageIcon;

/*
* LabelDemo.java needs one other file:
* images/middle.gif
*/
public class LabelDemo extends JPanel {
public LabelDemo() {
super(new GridLayout(3,1)); //3 rows, 1 column
JLabel label,label1, label2, label3;
JLabel theLabel;
//La carpeta d'imatges ha d'estar on hi ha els fitxers java
//en el nostre cas penjant de "src"
//es així per la forma com cerca el recurs
//al mètode createImageIcon
ImageIcon icon = createImageIcon("images/middle.gif",
"a pretty but meaningless splat");

//Create the first label.


label1 = new JLabel("Image and Text",
icon,
JLabel.CENTER);
//Set the position of its text, relative to its icon:
label1.setVerticalTextPosition(JLabel.BOTTOM);
label1.setHorizontalTextPosition(JLabel.CENTER);

//Create the other labels.


label2 = new JLabel("Text-Only Label");
label3 = new JLabel(icon);

//Create tool tips, for the heck of it.


label1.setToolTipText("A label containing both image and text");
label2.setToolTipText("A label containing only text");
label3.setToolTipText("A label containing only an image");

//Add the labels.


add(label1);
add(label2);
add(label3);

String initialText = "<html>\n" +


"Color and font test:\n" +
"<ul>\n" +
"<li><font color=red>red</font>\n" +
"<li><font color=blue>blue</font>\n" +
"<li><font color=green>green</font>\n" +
"<li><font size=-2>small</font>\n" +
"<li><font size=+2>large</font>\n" +
"<li><i>italic</i>\n" +
"<li><b>bold</b>\n" +
"</ul>\n";

theLabel = new JLabel(initialText) {


public Dimension getPreferredSize() {
return new Dimension(200, 200); }
public Dimension getMinimumSize() {
return new Dimension(200, 200); }
public Dimension getMaximumSize() {
return new Dimension(200, 200); }

Material d’APM. Pàgina 2 de 5


Institut Almatà – DAM – M3 – UF5 – Swing – JLabel

};
add(theLabel);
//Per utilitzar HTML cal posar davant <HTML>
label = new JLabel("<html>A label<br> dos linies");
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setForeground(new Color(0x0000ff));
label.setOpaque(true); //SI NO FEM AIXÒ NO PINTA EL FONS.
label.setBackground(Color.YELLOW);

add(label);
}

/** Returns an ImageIcon, or null if the path was invalid. */


protected static ImageIcon createImageIcon(String path,
String description) {
java.net.URL imgURL = LabelDemo.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}

public static void main(String[] args) {


LabelDemo ld= new LabelDemo();
//Create and set up the window.
JFrame frame = new JFrame("LabelDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Add content to the window.


frame.add(new LabelDemo());

//Display the window.


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

}
}

Material d’APM. Pàgina 3 de 5


Institut Almatà – DAM – M3 – UF5 – Swing – JLabel

EVENTS PER LA JLabel.


Recorda que tots els components suporten els següents events:
component listener
Listens for changes in the component's
size, position, or visibility.
focus listener
Listens for whether the component
gained or lost the keyboard focus.
key listener
Listens for key presses; key events are
fired only by the component that has the
current keyboard focus.
mouse listener
Listens for mouse clicks, mouse
presses, mouse releases and mouse
movement into or out of the
component's drawing area.
mouse-motion listener
Listens for changes in the mouse
cursor's position over the component.
mouse-wheel listener
Listens for mouse wheel movement
over the component.
Hierarchy Listener
Listens for changes to a component's
containment hierarchy of changed
events.
Hierarchy Bounds Listener
Listens for changes to a component's
containment hierarchy of moved and
resized events.

El component JLabel no té events específics, per tant, utilitzarem un dels events que
suporten tots els components. En el nostre classe ens interessa la interacció amb el
ratolí. És a dir, la interfície MouseListener que ens facilitarà un objecte MouseEvent
com a paràmetre als mètodes.

Un exemple seria fer una classe externa oient de la label “JLabel” de l’exemple
anterior. Per afegir l’oient faríem:

Gestor gestor= new Gestor();


label.addMouseListener(gestor);
add(label);

Gestor és la nova classe oient que haurem de fer i que implementi la interfície
MouseListener. Tot seguit hi ha un exemple complet del gestor.

Material d’APM. Pàgina 4 de 5


Institut Almatà – DAM – M3 – UF5 – Swing – JLabel

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Gestor implements MouseListener{

public void mouseClicked(MouseEvent arg0) {


// TODO Auto-generated method stub
System.out.println("mouseClicked");
}

public void mouseEntered(MouseEvent arg0) {


// TODO Auto-generated method stub
System.out.println("mouseEntered");
}

public void mouseExited(MouseEvent arg0) {


// TODO Auto-generated method stub
System.out.println("mouseExited");
}

public void mousePressed(MouseEvent arg0) {


// TODO Auto-generated method stub
System.out.println("mousePressed");
}

public void mouseReleased(MouseEvent arg0) {


// TODO Auto-generated method stub
System.out.println("mouseReleased");
}

Material d’APM. Pàgina 5 de 5

You might also like