在Java中,實現對話框與主窗口的數據交互通常需要使用Swing庫。以下是一個簡單的示例,展示了如何在主窗口和對話框之間傳遞數據:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MainWindow extends JFrame {
private JTextField textField;
private JButton openDialogButton;
public MainWindow() {
initUI();
}
private void initUI() {
setLayout(new FlowLayout());
setSize(300, 200);
setTitle("主窗口");
textField = new JTextField(20);
add(textField);
openDialogButton = new JButton("打開對話框");
openDialogButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openDialog();
}
});
add(openDialogButton);
}
private void openDialog() {
DialogWindow dialog = new DialogWindow(this);
dialog.setVisible(true);
}
public void setTextFieldText(String text) {
textField.setText(text);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MainWindow mainWindow = new MainWindow();
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setVisible(true);
}
});
}
}
public class DialogWindow extends JDialog {
private JTextField textField;
private JButton setTextButton;
private MainWindow mainWindow;
public DialogWindow(MainWindow mainWindow) {
super(mainWindow, "對話框", true);
this.mainWindow = mainWindow;
initUI();
}
private void initUI() {
setLayout(new FlowLayout());
setSize(200, 150);
textField = new JTextField(20);
add(textField);
setTextButton = new JButton("設置文本");
setTextButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setTextFieldInMainWindow();
}
});
add(setTextButton);
}
private void setTextFieldInMainWindow() {
String text = textField.getText();
mainWindow.setTextFieldText(text);
dispose();
}
}
在這個示例中,我們創建了一個主窗口(MainWindow)和一個對話框(DialogWindow)。主窗口包含一個文本字段和一個按鈕,用于打開對話框。對話框包含一個文本字段和一個按鈕,用于將文本字段的內容設置到主窗口的文本字段中。
當用戶點擊主窗口中的“打開對話框”按鈕時,會創建并顯示一個對話框實例。在對話框中輸入文本并點擊“設置文本”按鈕后,對話框會將輸入的文本設置到主窗口的文本字段中。