1. ホーム
  2. ジャワ

Java GUI プログラミング 4 --- ラベルコンポーネント JLabel

2022-02-22 23:10:20
<パス

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.Allignmentの値を使用して、テキスト内容とアライメントを設定します。 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;
import java.awt.Dimension;
import java.awt;
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("I am a label",JLabel.CENTER) ; // instantiate the label object
        frame.add(lab) ; // add the component to the panel
        frame.setBackground(Color.WHITE) ; // set the background color of the form

        Dimension dim = new Dimension() ;
        dim.setSize(400,200) ; // the size of the form
        frame.setSize(dim) ; //Set the size of the form
        Point point = new Point(500,100) ; // set the coordinates
        frame.setLocation(point) ; // set the coordinates of the form
        frame.setVisible(true) ; // set the form to be visible
    }
}

実行中の結果

上記のコードにコンテナの概念を反映させたい場合は、JFrameのgetContentPane()から直接ウィンドウのContainerオブジェクトを取得し、このオブジェクトにコンポーネントを追加すればよいでしょう。
修正したコードは以下の通りです。

import java.awt;
import java.awt;
import java.awt;
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(); // get the container of the current form
        JLabel lab = new JLabel("I am a label",JLabel.CENTER) ; // instantiate the label object
        container.add(lab) ; // Add the component pieces to the form's container

        Dimension dim = new Dimension() ;
        dim.setSize(400,200) ; // the size of the form
        frame.setSize(dim) ; // set the size of the form
        Point point = new Point(500,100) ; // set the coordinates
        frame.setLocation(point) ; // set the coordinates of the form
        frame.setVisible(true) ; // set the form to be visible
    }
}

実行結果は、上記のものと同じです

2. JLableのテキストスタイルを変更する

今すぐフォントを変更したい場合は、Componentクラスで定義されている以下のメソッドを使用します。

public void setFont(Font f)

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;
import java.awt;
import java.awt;
import javax.swing;
JFrame; import javax.swing;
public class JLabelDemo02
JLabelDemo02
    public static void main(String args[])
    {
        JFrame frame = new JFrame("Change the text style of JLable");
        // instantiate the label object, left-aligned text
        JLabel lab = new JLabel("Text in label", JLabel.LEFT); 
        // Create Font object using Serief font, display style for italic Font.
        Font fnt = new Font("Serief", Font.ITALIC + Font.BOLD, 30);
        lab.setFont(fnt); //set the font in the label
        lab.setForeground(Color.BLUE); //set the color of the text in the label
        frame.add(lab); // add the component to the panel
        frame.getContentPane().setBackground(Color.PINK); // set the background color of the form
        Dimension dim = new Dimension(); //initialize the size of the form
        dim.setSize(400, 200);
        frame.setSize(dim); //Set the size of the form
        Point point = new Point(500, 100); //initialize the coordinate point
        frame.setLocation(point); //Set the position of the form
        frame.setVisible(true);
    }
}


ランの結果

ローカルにあるすべてのフォントを取得する

マシンにあるすべてのフォントを取得したい場合はどうすればよいでしょうか。-- それはGraphicsEnvironmentクラスを使ってできます。
GraphicsEnvironmentは、すべての描画デバイスとこのマシンのすべてのフォントコレクションを返すことができます、このクラスは、抽象クラスは、オブジェクトをインスタンス化するために、直接クラスのgetLocalGraphicsEnvironment()メソッドを使用できる、その後にgetAvailableFontFamilyNames()メソッドを介して利用できるすべてのフォントを取得する、コードは次のようになります。
例 マシン上で利用可能なすべてのフォントを取得する

import java.awt;
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
//too many to omit...
Consolas
//too many to omit...
Times New Roman
//too many omissions...
Imitation Song
//too many omissions...
Chinese characters
bold


JLabelに画像を設定する

Icon インターフェースと ImageIcon サブクラスを使って、JLabel に直接画像を設定することができます。この場合、下表の構成を使って、画像データをバイト配列として JLabel に設定することが可能です。

<テーブル シリアル番号 方式 タイプ 説明 1 public ImageIcon(byte[] imageData) コンストラクトメソッド 画像情報を保持するバイト配列を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;
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
JLabelDemo03 {
    public static void main(String args[])
    {
        JFrame frame = new JFrame("Set image on JLabel label");
        //specify the path of the picture
        String picPath = "C:\\Users\\\Administrator\\\Desktop\\\ Smurf.jpg";
        File file = new File(picPath); // instantiate the object of the File class
        InputStream input = null;
        byte b[] = new byte[(int) file.length()]; // set the length of the byte array according to the size of the picture

        try
        {
            input = new FileInputStream(file); //Instantiate the file byte input stream
            input.read(b); //read the bytes from the image into the byte array
            input.close(); //close the file stream
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        Icon icon = new ImageIcon(b); // use byte array, instantiate ImageIcon object
        // instantiate the label object: with image, center-aligned
        JLabel lab = new JLabel("Label with image", icon, JLabel.CENTER); 
        //set the font, italic, bold, font size 28
        Font fnt = new Font("宋体", Font.ITALIC + Font.BOLD, 28);
        // Set the font in the label
        lab.setFont(fnt);
        //the color of the font in this label
        lab.setForeground(Color.BLUE);
        // Set the background color of the label
        lab.setOpaque(true);
        lab.setBackground(Color.PINK);
        //add the labels to the panel
        frame.add(lab); // add the components to the panel

        // Set the background color of the form
        frame.getContentPane().setBackground(Color.WHITE);
        // Set the width and height of the window
        Dimension dim = new Dimension();
        dim.setSize(800,600 );
        frame.setSize(dim);
        //set the coordinates of the form
        Point point = new Point(100, 100); // set coordinates
        frame.setLocation(point);
        frame.setVisible(true);
    }
}

ランニング効果。

jlabelの背景色を設定する

jlabelはデフォルトで透明なので、デフォルトで背景色を設定してもうまくいきません。
しかし、これによってその背景色を変更することができます。

jlabel.setOpaque(true);
jlabel.setbackground(color.black);

プロヴァンス https://blog.csdn.net/mr_pang/article/details/47449495
画像読み込み用のIOストリームをテープで使って、JLabelにグラフィックを表示するように設定するのが面倒なら、ImageIconのインスタンス化にグラフィックのパスを渡して、JLabelクラスの対応するコンストラクタを使えばいいのです。

例 画像パスを指定してImageIconをインスタンス化する例

画像を表示します。


場所を指定します。C:\UsersAdministrator Desktop Thmurf_Jc.jpg;

import java.awt.Dimension;
import java.awt.Color;
import java.awt;
import java.awt;
import javax.swing;
import javax.swing.JFrame;
import javax.swing.Icon;
import javax.swing.ImageIcon;
public class JLabelDemo04
JLabelDemo04 {
    public static void main(String args[])
    {
        JFrame frame = new JFrame("Instantiate JLabel by image path");
        // Specify the image path
        String picPath = "C:\\Users\\Administrator\\\Desktop\\\ Smurf_Jc.jpg";
        // Instantiate ImageIcon
        Icon icon = new ImageIcon(picPath);
        // instantiate the label object
        JLabel lab = new JLabel("Set JLabel by image path", icon, JLabel;)
        // Initialize the font
        Font fnt = new Font("Serief", Font.ITALIC + Font.BOLD, 16);
        // Set the font for the label
        lab.setFont(fnt);
        // This label font color
        lab.setForeground(Color.RED);
        // Set the label background color
        lab.setOpaque(true);
        lab.setBackground(Color.PINK);

        // put the labels into the panel
        frame.add(lab); 
        Dimension dim = new Dimension();
        dim.setSize(500, 300);
        frame.setSize(dim);
        Point point = new Point(100, 100); // set coordinates
        frame.setLocation(point);
        frame.setVisible(true);
    }
}


結果を実行します。

上記の画像の設定方法は、どちらも効果を試すことができます。画像が不確定な入力ストリームから来る場合(データベースからの読み込みなど)には、最初の方法を使用します。画像がファイルから取得される場合は、IO処理の少ない2番目の方法を使う方が簡単です。