在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)。主窗口包含一个文本字段和一个按钮,用于打开对话框。对话框包含一个文本字段和一个按钮,用于将文本字段的内容设置到主窗口的文本字段中。
当用户点击主窗口中的“打开对话框”按钮时,会创建并显示一个对话框实例。在对话框中输入文本并点击“设置文本”按钮后,对话框会将输入的文本设置到主窗口的文本字段中。