この記事では、Java の Swing ツールキットについて説明します。 JFrame、JDialog、JApplet などのコンポーネントを使用してグラフィカル ユーザー インターフェイス (GUI) を構築するためのライブラリ。これらは必須のトップレベル コンテナとして機能します。また、Swing コンポーネントを使用して簡単な問い合わせフォームを作成する方法も示します。
Swing は、単純なグラフィカル ユーザー インターフェイス (GUI) を作成するために使用される Java ライブラリです。これは、GUI を構築するためのコンポーネントのコレクションを提供する GUI ウィジェット ツールキットです。 (Oracle Docs、未確認)。 Swing コンポーネントはすべて Java プログラミング言語で書かれています。一般に便利なトップレベルのコンテナ クラスは、JFrame、JDialog、JApplet の 3 つです (Oracle Docs、未確認)。
最上位コンテナ:
JFrame は、タイトルと境界線を持つトップレベルのウィンドウです。
(Oracle Docs、未確認、フレームの作成方法 (メイン ウィンドウ)。
JDialog ウィンドウは、メインの Swing アプリケーション ウィンドウとは別に一時的に表示される独立したサブウィンドウです。
(Oracle Docs、未確認、ダイアログの作成方法)
「JApplet」、Java アプレットは、Java テクノロジが有効になっているブラウザがインターネットからダウンロードして実行できる特別な種類の Java プログラムです。アプレットは通常、Web ページ内に埋め込まれ、ブラウザのコンテキストで実行されます。アプレットはアプレットのサブクラスである必要があります。アプレットクラス。アプレット クラスは、アプレットとブラウザ環境の間の標準インターフェイスを提供します。」 (Oracle Docs、未確認)。
Swing コンポーネントを利用するすべてのプログラムには、少なくとも 1 つのトップレベル コンテナが含まれています。このトップレベルのコンテナは、コンテナ内のすべての Swing コンポーネントを含む格納階層のルートとして機能します (Oracle Docs、未確認)。
通常、Swing ベースの GUI を備えたスタンドアロン アプリケーションには、ルートとして JFrame を持つ少なくとも 1 つの包含階層があります。たとえば、アプリケーションにメイン ウィンドウと 2 つのダイアログがある場合、アプリケーションには 3 つの包含階層があり、それぞれが独自の最上位コンテナーを持ちます。メイン ウィンドウにはルートとして JFrame があり、各ダイアログにはルートとして JDialog があります。また、Swing ベースのアプレットには少なくとも 1 つの包含階層があり、そのうちの 1 つは JApplet オブジェクトによってルートされます。たとえば、ダイアログを表示するアプレットには 2 つの包含階層があります。ブラウザ ウィンドウ内のコンポーネントは、JApplet オブジェクトをルートとする包含階層に属し、ダイアログは JDialog オブジェクトをルートとする包含階層に属します。
JComponent クラス:
トップレベルのコンテナを除き、「J」で始まるすべての Swing コンポーネントは JComponent クラスから派生します。たとえば、JPanel、JScrollPane、JButton、および JTable はすべて JComponent を継承します。ただし、JFrame と JDialog はトップレベルのコンテナであるため、そうではありません (Oracle Docs、未確認、JComponent Class)
フレームとパネルの違い:
フレーム:
JFrame は、タイトル、境界線、ボタンを備えたウィンドウを表すトップレベルのコンテナです。
通常、アプリケーションのメイン ウィンドウとして使用されます。
JFrame には、JPanel、JScrollPane、JButton、JTable などの複数のコンポーネントを含めることができます。
パネル:
JPanel は、ウィンドウ内でコンポーネントのセットをグループ化するために使用される汎用コンテナです。
タイトルバーや閉じるボタンなどのウィンドウ装飾はありません。
JPanel は、JFrame 内のレイアウトを整理および管理するためによく使用されます。
Swing コンポーネントを利用するすべてのプログラムには、少なくとも 1 つのトップレベル コンテナが含まれています。このトップレベルのコンテナは、コンテナ内のすべての Swing コンポーネントを含む格納階層のルートとして機能します (Oracle Docs、未確認)。
通常、Swing ベースの GUI を備えたスタンドアロン アプリケーションには、ルートとして JFrame を持つ少なくとも 1 つの包含階層があります。たとえば、アプリケーションにメイン ウィンドウと 2 つのダイアログがある場合、アプリケーションには 3 つの包含階層があり、それぞれが独自の最上位コンテナーを持ちます。メイン ウィンドウにはルートとして JFrame があり、各ダイアログにはルートとして JDialog があります。
Swing ベースのアプレットには少なくとも 1 つの包含階層があり、そのうちの 1 つは JApplet オブジェクトによってルートされます。たとえば、ダイアログを表示するアプレットには 2 つの包含階層があります。ブラウザ ウィンドウ内のコンポーネントは、JApplet オブジェクトをルートとする包含階層に属し、ダイアログは JDialog オブジェクトをルートとする包含階層に属します。
以下の例には、JFrame と JPanel に加えて、GridBagLayout を使用するボタン、テキスト フィールド、ラベルなどの追加コンポーネントが含まれています。さらに、JDialog、JOptionPane コンポーネント、およびダイアログ ウィンドウ コンポーネントを使用してメッセージも表示します。これは、Swing コンポーネントを使用したシンプルなグラフィカル ユーザー インターフェイス (GUI) のお問い合わせフォームです。
//--- Abstract Window Toolkit (AWT) // Provides layout manager for arranging components in five regions: // north, south, east, west, and center. import java.awt.BorderLayout; // Grid layout - Specifies constraints for components that are laid out using the GridBagLayout. import java.awt.GridBagConstraints; // Grid - layout manager that aligns components vertically and horizontally, // without requiring the components to be of the same size. import java.awt.GridBagLayout; // Gird padding - Specifies the space (padding) between components and their borders. import java.awt.Insets; // Button - Provides the capability to handle action events like button clicks. import java.awt.event.ActionEvent; // Button event - Allows handling of action events, such as button clicks. import java.awt.event.ActionListener; //--- swing GUI // Button - Provides a button component that can trigger actions when clicked. import javax.swing.JButton; // Frame - Provides a window with decorations // such as a title, border, and buttons for closing and minimizing. import javax.swing.JFrame; // Labels - Provides a display area for a short text string or an image, or both. import javax.swing.JLabel; // Submition Message - Provides standard dialog boxes such as message, input, and confirmation dialogs. import javax.swing.JOptionPane; // Panel - Provides a generic container for grouping components together. import javax.swing.JPanel; // Scroll user message - Provides to the a scrollable view of a lightweight component. import javax.swing.JScrollPane; // User message - Provides a multi-line area to display/edit plain text. import javax.swing.JTextArea; // Name & Email - Provides a single-line text field for user input. import javax.swing.JTextField; /** * This class generates a simple contact form. The form includes fields for the * user's name, email, and message, and a submit button to submit the form. * * @author Alejandro Ricciardi * @version 1.0 * @date 06/16/2024 */ public class contactForm { /** * The main method to create and display the contact form. * * @param args Command line arguments */ public static void main(String[] args) { /*------------ | Frame | ------------*/ // ---- Initializes frame // Creates the main application frame JFrame frame = new JFrame("Contact Form"); frame.setSize(400, 300); // Set the size of the frame // Close the application when the frame is closed frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); // Use BorderLayout for the frame /*------------ | Panel | ------------*/ // ---- Initializes panel // Create a panel with GridBagLayout JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gridForm = new GridBagConstraints(); gridForm.insets = new Insets(5, 5, 5, 5); // Add padding around components // ---- Creates and adds grid components to the panel // -- Name // Adds "Name" label JLabel nameLabel = new JLabel("Name:"); gridForm.gridx = 0; // Position at column 0 gridForm.gridy = 0; // Position at row 0 panel.add(nameLabel, gridForm); // Add text field for name input JTextField nameField = new JTextField(20); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 0; // Position at row 0 panel.add(nameField, gridForm); // -- Email // Add "Email" label JLabel emailLabel = new JLabel("Email:"); gridForm.gridx = 0; // Position at column 0 gridForm.gridy = 1; // Position at row 1 panel.add(emailLabel, gridForm); // Adds text field for email input JTextField emailField = new JTextField(20); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 1; // Position at row 1 panel.add(emailField, gridForm); // Adds "Message" label JLabel messageLabel = new JLabel("Message:"); gridForm.gridx = 0; // Position at column 0 gridForm.gridy = 2; // Position at row 2 panel.add(messageLabel, gridForm); // -- Message // Adds text area for message input with a scroll pane JTextArea messageArea = new JTextArea(5, 20); JScrollPane scrollPane = new JScrollPane(messageArea); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 2; // Position at row 2 panel.add(scrollPane, gridForm); // Adds "Submit" button JButton submitButton = new JButton("Submit"); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 3; // Position at row 3 panel.add(submitButton, gridForm); // Adds the panel to the frame's center frame.add(panel, BorderLayout.CENTER); // Make the frame visible frame.setVisible(true); /*------------ | JDialog | ------------*/ // Add action listener to the submit button ActionListener submitBtnClicked = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Display a message dialog when the submit button is clicked JOptionPane.showMessageDialog(frame, "Message was sent!"); } }; submitButton.addActionListener(submitBtnClicked); } }
ダイアログ ウィンドウについて詳しく知りたい場合は、次のビデオで JDialog JOptionPane メッセージの実装方法が説明されています。
要約すると、Java の Swing ツールキットは、開発者がユーザーフレンドリーで視覚的に構造化された GUI を作成できるコンポーネントのセットを提供します。このライブラリは、JPanel や JOptionPane などの重要な要素とともに、JFrame、JDialog、JApplet などのトップレベルのコンテナを使用します。
参考文献:
Oracle ドキュメント。 (NDA)。 スイング。オラクル。 https://docs.oracle.com/javase/8/docs/technotes/guides/swing/
Oracle ドキュメント。 (n.d.b)。トップレベルコンテナの使用。 Java™ チュートリアル。オラクル。 https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html
Oracle ドキュメント。 (n.d.c)。 Java アプレット。 Java™ チュートリアル。オラクル。 https://docs.oracle.com/javase/tutorial/deployment/applet/index.html
元々は、2024 年 11 月 3 日に Alex.omegapy によって Medium で公開されました。
以上がSwing コンポーネントを使用した Java GUI の作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。