Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJFrameとJDialogの違いとは?特徴と使い分けを解説

JavaのSwingには、ウィンドウを表示するためのトップレベルコンテナとしてJFrameJDialogが用意されています。どちらもよく似た役割を持ちますが、動作や用途には重要な違いがあります。この記事では、それぞれの特徴をサンプルコードとともに解説し、最後に使い分けのポイントをまとめます。

JFrameとは

  • フレームに追加されたコンポーネントは「コンテンツ」として扱われ、contentPaneによって管理されます。JFrameにコンポーネントを追加する際は、フレーム本体ではなくcontentPaneに対して追加する必要があります。
  • JFrameは、タイトル境界線、(オプションで)メニューバー、そしてユーザーが配置したコンポーネントから構成されるウィンドウです。
  • JFrameは移動サイズ変更最小化(アイコン化)が可能で、JComponentのサブクラスではありません。
  • デフォルトでは画面の左上に表示されます。表示位置を指定したい場合は、JFrameクラスのsetLocation(x, y)メソッドを使用します。

コード例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameDemo {
    public static void main(String s[]) {
        JFrame frame = new JFrame("JFrame Demo");
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        JLabel lbl = new JLabel("JFrame Demo");
        lbl.setPreferredSize(new Dimension(175, 100));
        frame.getContentPane().add(lbl, BorderLayout.CENTER);
        frame.setSize(375, 275);
        frame.setVisible(true);
    }
}

実行結果

JavaのJFrameとJDialogの違いとは?特徴と使い分けを解説

JDialogとは

  • JDialogはJFrameと非常に似ていますが、最大の違いはモーダル設定ができる点です。「モーダル」とは、対象のダイアログが表示されている間、他のウィンドウを操作したりアクティブ化したりできないことを意味します。
  • モーダルダイアログは他のトップレベルウィンドウへの入力をブロックし、モードレスダイアログは他のウィンドウへの入力を許可します。
  • JFrameと異なり、JDialogにはウィンドウ右上に最小化・最大化ボタンがありません

コード例

import javax.swing.JDialog;
import javax.swing.JLabel;
public class JDialogDemo extends JDialog {
    public static void main(String[] args) {
        try {
            JDialogDemo dialog = new JDialogDemo();
            dialog.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public JDialogDemo() {
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setTitle("Welcome to Tutorials Point");
        setBounds(100, 100, 359, 174);
        getContentPane().setLayout(null);
        JLabel label = new JLabel("Welcome to Tutorials Point");
        label.setBounds(86, 37, 175, 29);
        getContentPane().add(label);
    }
}

実行結果

JavaのJFrameとJDialogの違いとは?特徴と使い分けを解説

JFrameとJDialogの比較

項目JFrameJDialog
モーダル設定不可可能
最小化・最大化ボタンありなし
主な用途アプリケーションのメインウィンドウ確認・入力などの一時的なダイアログ

まとめ

JFrameはアプリケーションのメインウィンドウとして使用されるのに対し、JDialogはユーザーに注意を促したり入力を受け付けたりする補助的なウィンドウに適しています。特に、処理を完了させるまで他の操作を禁止したい場面では、モーダル設定が可能なJDialogが有効です。両者の特性を理解し、目的に応じて適切に使い分けましょう。

  1. JavaのJTextFieldとJTextAreaの違いとは?特徴と使い分けを解説

    JavaのGUIアプリケーションにおけるJTextFieldとJTextAreaの最大の違いは、JTextFieldが1行のテキスト入力に対応しているのに対し、JTextAreaは複数行のテキスト入力に対応しているという点です。どちらもSwingが提供するテキストコンポーネントであり、共通の親クラスであるJTextComponentを継承しています。 JTextFieldとは JTextFieldは、ユーザーが1行形式でテキストを入力できる、最も基本的かつ重要なコンポーネントの一つです。 テキストフィールド内で入力操作を行うと、ActionListenerインターフェースによるイベントが発生

  2. JavaのGridLayoutとGridBagLayoutの違いを徹底解説!特徴と使い分けのポイント

    JavaのAWT/Swingには複数のレイアウトマネージャーが用意されていますが、その中でもGridLayoutとGridBagLayoutは、コンポーネントを格子状(グリッド)に配置するという点でよく似ています。しかし、両者には重要な違いがあります。 GridLayoutは、すべてのコンポーネントを矩形のグリッド内に配置し、領域を同じサイズの長方形に分割して、各コンポーネントをそれぞれのセルの中に収めます。一方、GridBagLayoutは柔軟性の高いレイアウトマネージャーであり、コンポーネントのサイズを揃えることなく、縦方向・横方向に整列させて配置できます。各GridBagLayoutオブ