主窗体代码
package messagebox;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame {
JButton bt1 =new JButton("弹出对话框");
JButton bt2 =new JButton("弹出提示对话框");
JButton bt3 =new JButton("弹出错误对话框");
JButton bt4 =new JButton("弹出警告对话框");
JButton bt5 =new JButton("弹出问题对话框");
JButton bt6 =new JButton("弹出选择对话框");
JLabel lb =new JLabel();
public Main() {
setLayout(new FlowLayout());
add(bt1);
add(bt2);
add(bt3);
add(bt4);
add(bt5);
add(bt6);
add(lb);
this.setSize(300,200);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
bt1.addActionListener(new BtListener());
bt2.addActionListener(new Bt2Listener());
bt3.addActionListener(new Bt3Listener());
bt4.addActionListener(new Bt4Listener());
bt5.addActionListener(new Bt5Listener());
bt6.addActionListener(new Bt6Listener());
}
class BtListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
Child dlg =new Child(Main.this);
dlg.setSize(200,100);
dlg.setTitle("自定义模态对话框");
dlg.setLocationRelativeTo(null);//定位在显示器正中间
dlg.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dlg.setModal(true);//设置模态对话框
dlg.lb.setText("from fatherFrame");//向对话框传值
dlg.setVisible(true);
}
}
class Bt2Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"这是一个提示信息", "提示",JOptionPane.INFORMATION_MESSAGE);
}
}
class Bt3Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"这是一个错误信息", "错误",JOptionPane.ERROR_MESSAGE);
}
}
class Bt4Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"这是一个警告信息", "警告",JOptionPane.WARNING_MESSAGE);
}
}
class Bt5Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"这是一个问题信息", "问题",JOptionPane.QUESTION_MESSAGE);
}
}
class Bt6Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane.showConfirmDialog(null,"是否确认","请选择",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);
}
}
public static void main(String[] args) {
new Main();
}
}
子窗体代码
package messagebox;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Child extends JDialog {
JButton bt =new JButton("返回主窗体");
Main main =null;//表示探出此对话框的主窗口,由主窗口创建对话框时传递过来
JLabel lb =new JLabel();
public Child(Main main) {
this.main=main;//主窗口传来后,即可对主窗口及其组件进行操作
setLayout(new FlowLayout());
add(bt);
add(lb);
bt.addActionListener(new BtListener());
}
class BtListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
dispose();//隐藏对话框
main.lb.setText("from Child");//向主窗体传值
}
}
}
运行结果