swing:labels

Labels

Μέχρι τώρα είδαμε πως μπορείτε να προσθέσετε ένα κουμπί σε ένα αντικείμενο της κλάσης javax.swing.JFrame. Εάν θέλετε να προσθέσετε κείμενο ή εικόνα χωρίς να υπάρχει αλληλεπίδραση με αυτό θα χρειαστείτε ένα label (javax.swing.JLabel) για να το κάνετε όπως παρακάτω:

LabelGreeting.java
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
 
public class LabelGreeting extends JFrame {
  public LabelGreeting () {
    super();
    setSize(200, 100);
    setTitle("button with label");
    JLabel greeting = new JLabel("How are you?");
    add(greeting);
  }
 
  public static void main(String[] args) {
    LabelGreeting lg = new LabelGreeting();
    lg.setVisible(true);
  }
}

Ένα αντικείμενο της κλάσης JLabel μπορεί να περιέχει κείμενο ή εικόνα ή και τα δύο. Επίσης σε ένα τέτοιο αντικείμενο της κλάσης, στην θέση του κειμένου μπορείτε να προσθέσετε HTML όπως θα δούμε παρακάτω. Εάν προσθέσετε μόνο κείμενο αυτό στοιχίζεται αυτόματα στα αριστερά ενώ εάν προσθέσετε εικόνα αυτή στοιχίζεται αυτόματα στα δεξιά. Σε κάθε περίπτωση μπορείτε να προσδιορίσετε τον τρόπο στοίχισης του περιεχομένου μέσα από τις μεθόδους

void setHorizontalAlignment(int alignment)
//Sets the alignment of the label's contents along the X axis.
void setVerticalAlignment(int alignment)
Sets the alignment of the label's contents along the Y axis.

Εάν ένα Label περιέχει κείμενο και εικόνα μπορείτε να προσδιορίσετε την θέση του κειμένου σε σχέση με την εικόνα μέσα από τις μεθόδους

void setHorizontalTextPosition(int textPosition)
//Sets the horizontal position of the label's text, relative to its image.
void setVerticalTextPosition(int textPosition)
//Sets the vertical position of the label's text, relative to its image.

Δείτε το παρακάτω παράδειγμα από το site της Oracle και μεταβάλλετε τις παραμέτρους. Παρατηρήστε πως μπορείτε να προσθέσετε HTML κείμενο σε ένα αντικείμενο τύπου Label.

LabelDemo.java
package components;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
/*
 * 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 label1, label2, label3, label4;
 
    ImageIcon icon = createImageIcon("images/middle.gif",
                     "a pretty but meaningless splat");
 
    //setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
 
    //Create the first label.
    label1 = new JLabel("Image and Text",
              icon,
              JLabel.LEFT);
    //Set the position of its text, relative to its icon:
    label1.setVerticalTextPosition(JLabel.BOTTOM);
    label1.setHorizontalTextPosition(JLabel.CENTER);
    label1.setBorder(BorderFactory.createLineBorder(Color.BLACK));
 
    //Create the other labels.
    label2 = new JLabel("Text-Only Label");
    //label2.setHorizontalAlignment(JLabel.RIGHT);
    label2.setBorder(BorderFactory.createLineBorder(Color.BLACK));
 
    label3 = new JLabel(icon);
    label3.setBorder(BorderFactory.createLineBorder(Color.BLACK));
 
    label4 = new JLabel("<html><font size='12pt' color='red'>HTML text</font></html>", JLabel.RIGHT);
    label4.setBorder(BorderFactory.createLineBorder(Color.BLACK));
 
    //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);
    add(label4);
  }
 
  /** 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;
    }
  }
 
  /**
   * Create the GUI and show it.  For thread safety,
   * this method should be invoked from the
   * event dispatch thread.
   */
  private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("LabelDemo");
    frame.setSize(400,300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
    //Add content to the window.
    frame.add(new LabelDemo());
 
    //Display the window.
    //frame.pack();
    frame.setVisible(true);
  }
 
  public static void main(String[] args) {
    //Schedule a job for the event dispatch thread:
    //creating and showing this application's GUI.
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
		//Turn off metal's use of bold fonts
	    UIManager.put("swing.boldMetal", Boolean.FALSE);
 
		createAndShowGUI();
      }
    });
  }
}
swing/labels.txt · Last modified: 2016/02/26 11:15 (external edit)