欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JFrame窗体传递

程序员文章站 2022-06-11 21:07:21
...

主窗体代码

package MainChildFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MainFrame 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 MainFrame() {
		setLayout(new FlowLayout());
		add(bt1);
		add(bt2);
		add(bt3);
		add(bt4);
		add(bt5);
		add(bt6);
		add(lb);
		this.setTitle("MainFrame");
		this.setSize(400,350);
		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) {
			ChildFrame dlg =new ChildFrame(MainFrame.this);
			dlg.setSize(300,300);
			dlg.setTitle("子窗体");
			dlg.setLocationRelativeTo(null);//定位在显示器正中间
			dlg.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//禁用关闭按钮	
			dlg.setResizable(false);//禁止窗体最大化
			dlg.setVisible(true);
			dlg.lb.setText("from MainFrame");//向子窗体传值
			MainFrame.this.setVisible(false);//隐藏主窗体
			
		}
	}
	/*
	 * setDefaultCloseOperation( );  各个参数的定义:
	 * 
		1、为“0”或DO_NOTHING_ON_CLOSE:
		    (在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的WindowListener 对象的 windowClosing 方法中处理该操作。
		
		2、为“1”或HIDE_ON_CLOSE:
		    调用任意已注册的 WindowListener 对象后自动隐藏该窗体。此时没有关闭程序,只是将程序界面隐藏了。
		
		3、为“2”或DISPOSE_ON_CLOSE:
		    调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。但继续运行应用程序,释放了窗体中占用的资源。
		
		4、为“3”EXIT_ON_CLOSE:
		        (在 JFrame 中定义)使用 System exit 方法退出应用程序。仅在应用程序中使用。结束了应用程序。
		
		5、默认情况下,该值被设置为 HIDE_ON_CLOSE
	 */
	//提示对话框  监听器
	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 MainFrame();
	}

}

子窗体代码

package MainChildFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class ChildFrame  extends JFrame {
	JButton bt =new JButton("返回主窗体");
	MainFrame main =null;//表示探出子窗体的主窗口,由主窗口创建对话框时传递过来
	JLabel lb =new JLabel();
	
	public ChildFrame(MainFrame 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 ChildFrame");//向主窗体传值
			main.setVisible(true);//显示主窗体
		}
	}
}

运行效果

JFrame窗体传递JFrame窗体传递JFrame窗体传递

相关标签: JFrame窗体传递