テキストフィールドのサイズをピクセル単位で設定する

テキストフィールドのサイズは、コンストラクタやメソッドによって指定した列数や初期値によって決まりますが、ピクセル単位でサイズを指定することもできます。ここではテキストフィールドにピクセル単位でサイズを設定する方法について解説します。

(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)

ピクセル単位でサイズを設定する

テキストフィールドのサイズをピクセル単位で設定するには JTextField クラスの親クラスである JComponent クラスで用意されている setPreferredSize メソッドを使います。

public void setPreferredSize(Dimension preferredSize)

このコンポーネントの適切なサイズを設定します。 preferredSizeがnullの場合、UIで適切なサイズを要求します。

オーバーライド:
setPreferredSize 、クラス: Component

パラメータ:
preferredSize - 新しい推奨サイズ、またはnull

引数にはサイズを表す Dimension クラスのオブジェクトを指定します。( Dimension クラスの詳細は「Dimensionクラス」を参照して下さい)。

実際の使い方は次のようになります。

JTextField text = new JTextField();
text.setPreferredSize(new Dimension(200, 100));

コンポーネントでサイズを設定する場合、使用しているレイアウトマネージャーによってはコンポーネントに設定したサイズは無視される場合がありますのでご注意ください。例えばレイアウトマネージャーとして BorderLayout を使用している場合はコンポーネントに設定されたサイズは無視されます。

またこのあとのサンプルプログラムで試してみますが、テキストフィールドに列数の指定と setPreferredSize メソッドによるサイズの指定を両方行った場合、横幅については列数が優先され、高さについては setPreferredSize メソッドによるサイズの設定が優先されます。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample5_1.java という名前で保存します。

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JPanel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Dimension;

class JSample5_1 extends JFrame{
  public static void main(String args[]){
    JSample5_1 frame = new JSample5_1("MyTitle");
    frame.setVisible(true);
  }

  JSample5_1(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField text1 = new JTextField();
    text1.setPreferredSize(new Dimension(500, 50));
    JTextField text2 = new JTextField("Hello");
    text2.setPreferredSize(new Dimension(500, 50));
    JTextField text3 = new JTextField("Hello", 35);
    text3.setPreferredSize(new Dimension(500, 50));
    JTextField text4 = new JTextField("Hello", 35);
    text4.setPreferredSize(new Dimension(500, 10));

    JPanel p = new JPanel();
    p.add(text1);
    p.add(text2);
    p.add(text3);
    p.add(text4);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }
}

次のようにコンパイルを行います。

javac JSample5_1.java

ピクセル単位でサイズを設定する(1)

コンパイルが終わりましたら実行します。

java JSample5_1

テキストフィールドを 4 つ追加しました。全てのテキストフィールドにピクセル単位でサイズを設定しています。

ピクセル単位でサイズを設定する(2)

1 つ目のテキストフィールドでは初期値も列数も設定せず、 2 つ目のテキストフィールドでは初期値だけを設定してあります。この 2 つのテキストフィールドについてはピクセル単位で設定したサイズが反映されています。 3 つ目と 4 つ目のテキストフィールドでは列数が設定されていますが、この場合横幅は列数の設定が有効となります。ただ列数が設定されていても高さについてはピクセル単位での設定が有効となっています。

テキストフィールドでピクセル単位でのサイズ指定を行う場合には列数の指定は行わないようにしてください。

-- --

テキストフィールドにピクセル単位でサイズを設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。