首頁  >  文章  >  Java  >  如何在 Java 應用程式中的 JFrame 之間有效地傳輸數據,特別是在處理用戶與子 JFrame 中的搜尋框和 JTable 的交互並需要返回選定的 r 時

如何在 Java 應用程式中的 JFrame 之間有效地傳輸數據,特別是在處理用戶與子 JFrame 中的搜尋框和 JTable 的交互並需要返回選定的 r 時

Susan Sarandon
Susan Sarandon原創
2024-10-26 14:53:021000瀏覽

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 的第二個 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、從子JDialog 檢索值以及更新父框架中的文字欄位當對話方塊關閉時。

以上是如何在 Java 應用程式中的 JFrame 之間有效地傳輸數據,特別是在處理用戶與子 JFrame 中的搜尋框和 JTable 的交互並需要返回選定的 r 時的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn