在 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中文網其他相關文章!