ホームページ >Java >&#&チュートリアル >Java アプリケーションの JFrame 間でデータを効果的に転送するにはどうすればよいですか。特に、子 JFrame で検索ボックスと JTable を使用したユーザー操作を処理し、選択された r を返す必要がある場合に、

Java アプリケーションの JFrame 間でデータを効果的に転送するにはどうすればよいですか。特に、子 JFrame で検索ボックスと JTable を使用したユーザー操作を処理し、選択された r を返す必要がある場合に、

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 14:53:021120ブラウズ

How do you effectively transfer data between JFrames in a Java application, specifically when handling user interactions with a search box and JTable in a child JFrame and needing to return selected row values to the parent JFrame?

JFrame 間でのデータの受け渡し

JFrame 間での値の受け渡しは、複雑な Java アプリケーション内でのデータ交換を調整するために不可欠です。この記事では、ユーザーがテキスト フィールドを含む JFrame を操作し、検索ボックスと JTable を備えた 2 番目の JFrame を開き、選択した行の値を最初の JFrame に転送する必要があるという一般的なシナリオについて説明します。

JFrame 通信を理解する

JFrame 間で値を渡すには、親ウィンドウと子ウィンドウ間の固有の関係を認識することが重要です。ある JFrame が別の JFrame を開くと、親フレームは子フレームへの参照を保持します。これにより、親フレームが子フレームのメソッドにアクセスしてデータを取得できるようになります。

値の受け渡しの実装

特定のシナリオでは、最良のアプローチは、内部でリスナーを使用することです。子 JFrame はテーブル行の選択を検出します。選択すると、リスナーは必要な値を抽出し、保存された参照を使用して親 JFrame に通知する必要があります。

あるいは、子 JFrame がモーダル ダイアログの場合、ダイアログが破棄されるまで値の受け渡しを遅らせることができます。この場合、子フレームは値を収集し、メソッド呼び出しを通じて親フレームに返す必要があります。

実装例

次の Java コード例を考えてみましょう。これは、JFrame 間での基本的な値受け渡しシナリオを実装します:

<code class="java">import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ValuePassing {

    private static void createAndShowUI() {
        JFrame parentFrame = new JFrame("Parent Frame");
        parentFrame.getContentPane().add(new ParentPanel());
        parentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        parentFrame.pack();
        parentFrame.setLocationRelativeTo(null);
        parentFrame.setVisible(true);
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                createAndShowUI();
            }
        });
    }
}

class ParentPanel extends JPanel {

    private JTextField textField;

    ParentPanel() {
        JButton openButton = new JButton("Open Child Frame");
        openButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                openChildFrame();
            }
        });

        textField = new JTextField(10);

        add(openButton);
        add(textField);
    }

    // Method to open the child frame as a modal dialog
    private void openChildFrame() {
        JDialog childDialog = new JDialog(JFrame.getFrames()[0], "Child Dialog", true);
        childDialog.getContentPane().add(new ChildPanel());
        childDialog.pack();
        childDialog.setLocationRelativeTo(null);
        childDialog.setVisible(true); // Here, the modal dialog takes over

        // Value passing occurs when the dialog is disposed
        textField.setText(childDialog.getContentPane().getComponent(0).toString());
    }
}

class ChildPanel extends JPanel {

    String getValue() {
        return "value from child";
    }
}</code>

この例では、モーダル ダイアログ関係を持つ子 JDialog を開き、子から値を取得し、親フレームのテキスト フィールドを更新する方法を示します。ダイアログが閉じられたとき。

以上がJava アプリケーションの JFrame 間でデータを効果的に転送するにはどうすればよいですか。特に、子 JFrame で検索ボックスと JTable を使用したユーザー操作を処理し、選択された r を返す必要がある場合に、の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。