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实现圆角窗体