首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何设置一个JFrame按钮来打开另一个JFrame,然后在第二个jframe关闭后接收信息?

要设置一个JFrame按钮来打开另一个JFrame并在第二个JFrame关闭后接收信息,可以按照以下步骤进行:

  1. 首先,创建两个JFrame对象,例如MainFrame和SecondFrame,用于显示两个窗口。
  2. 在MainFrame中创建一个按钮,可以使用JButton类,并添加一个ActionListener来处理按钮点击事件。在按钮点击事件的处理方法中,实例化SecondFrame对象并将其显示出来。
代码语言:txt
复制
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainFrame extends JFrame {
    private JButton openButton;

    public MainFrame() {
        setTitle("Main Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        openButton = new JButton("Open Second Frame");
        openButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                SecondFrame secondFrame = new SecondFrame();
                secondFrame.setVisible(true);
            }
        });

        getContentPane().add(openButton);
        pack();
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MainFrame mainFrame = new MainFrame();
                mainFrame.setVisible(true);
            }
        });
    }
}
  1. 在SecondFrame中,可以添加一些组件用于显示信息,并在窗口关闭时触发事件,以便发送信息给MainFrame。可以使用WindowListener来监听窗口关闭事件,在窗口关闭时,触发windowClosed方法,然后调用MainFrame的方法来接收信息。
代码语言:txt
复制
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class SecondFrame extends JFrame {
    private JLabel messageLabel;

    public SecondFrame() {
        setTitle("Second Frame");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        messageLabel = new JLabel("This is the second frame.");
        getContentPane().add(messageLabel);
        pack();
        setLocationRelativeTo(null);

        // 监听窗口关闭事件
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosed(WindowEvent e) {
                // 向MainFrame发送信息
                MainFrame.receiveMessage("Message from Second Frame");
            }
        });
    }
}
  1. 在MainFrame中,添加一个静态方法来接收来自SecondFrame的信息,并显示在控制台。
代码语言:txt
复制
public class MainFrame extends JFrame {
    // ...

    // 接收来自SecondFrame的信息
    public static void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
    
    // ...
}

这样,当在MainFrame点击按钮打开SecondFrame,并在SecondFrame关闭时,MainFrame就会接收到来自SecondFrame的信息,并显示在控制台上。

请注意,以上代码仅为示例,可能需要根据实际需求进行修改和完善。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

swing.2窗体控件

可以通过继承JFrame类创建一个窗口,在这个窗口中添加组件,同时为组件设置事件,拥有最大化、最小化、关闭的按钮。 JFrame类常用的方法如表12.1所示。...) 设置单击窗口上关闭按钮时处理方式。...案例Demo1201先创建了一个空白窗体,然后设置窗体布局和大小,通过调用setDefaultCloseOperation(int operation)方法来传入参数JFrame.EXIT_ON_CLOSE...如果没有设置窗口的关闭方式,单击关闭按钮是不能真正关闭窗口的,即单击关闭按钮时窗口会消失,虽然窗口消失了,但是还在JVM中。...) 创建一个有标题的对话框 public JDialog(Frame frame,boolean model) 创建一个无标题且指定类型的对话框 表12.2中,列举了JDialog类常用的构造方法,接下来通过一个案例来演示如何使用

8010

Java GUI.Swing窗体设计之JDialog

对话框需要依赖于一个窗口,它会随着窗口的关闭而关闭,随着窗口的最小化而隐藏,随着窗口的还原而再次显示。 对话框容器分为模态对话框和非模态对话框两类。...JDialog是Swing组件中的对话框,它继承了AWT组件中的Dialog类,它的功能是从一个窗体中弹出另一个窗体。JDialog类常用的构造方法如表12.2所示。...) 创建一个有标题的对话框 public JDialog(Frame frame,boolean model) 创建一个无标题且指定类型的对话框 表12.2中,列举了JDialog类常用的构造方法,接下来通过一个案例来演示如何使用...例12-2运行结果调用模态对话框 例12-2运行结果调用非模态对话框 例12-2运行之后,先创建了JFrame窗体,在窗体中添加两个按钮,用于弹出JDialog窗口,然后分别点击按钮,将对应窗口弹出,图...图12.4可以操作JFrame容器窗口进行窗口关闭,JDialog非模态对话框窗口也随之进行关闭。第37行代码为设置模态对话框模式,第47行代码为设置非模态对话框模式。

11910
  • JAVA学习中Swing部分JDialog对话框窗体的简单学习

    javax.swing.JLabel; import javax.swing.WindowConstants; /**  * 1:JDialog窗体时Swing组件中的对话框,  * JDialog的功能就是是从一个窗体中弹出另一个窗体...,就像是在使用浏览器时弹出的确定对话框一样  *  * 2:JDialog窗体和JFrame窗体类似,在使用时也需要调用getContentPane()方法将  * 窗体转化为容器,然后在容器中设置窗体的特性...);//设置容器可视化         jf.setSize(450, 400);//设置容器的大小         //设置容器的关闭方式         jf.setDefaultCloseOperation...窗体形式基本相同,甚至在设置窗体的特性     //时调用的方法名称都基本相同,如设置窗体的大小,设置窗体的关闭状态等     public MyJDialog(MyFrame frame){//定义一个构造方法...container=getContentPane();//创建一个容器         container.add(new JLabel("这是一个对话框"));//在容器中添加标签

    1.8K70

    GridLayout和

    布局管理器 表12.19中列举了GridLayout类的构造方法,接下来通过一个案例来演示GridLayout布局管理器的使用,如例12-18所示。...、纵向跨越几个网格,两个属性的默认值都是1 fill 如果组件的显示区域大于组件需要的大小,设置是否以及如何改变组件大小 weightx和weighty 设置组件占领容器中多余的水平方向和垂直方向空白的比例...的值如果设为REMAINER,表示当前组件在其行或列上为最后一个组件,如果两个属性值都设为RELATIVE,表示当前组件在其行或列上为倒数第二个组件;weightx和weighty的默认值是0,例如容器中有...REMAINDER 来控制结束行。当一行结束后,重新设置 GridBagConstraints 对象的 gridwidth 为 1,最后设置 JFrame 窗口为可见状态,并可关闭。...个命令按钮分别添加到面板jPanel2中,然后将各组件显示在窗口中。

    4500

    《Java 2 图形设计卷Ⅱ- SWING》第2章 Swing的基本知识

    例2-2中的应用程序还设置窗体的缺省关闭操作并添加一个窗口监听器,该监听器在窗体被关闭后会退出这个应用程序。有关Swing窗体的缺省关闭操作的更多信息,请参见2.1.4节“JFrame类”。  ...然后,这个小应用程序创建按钮,设置按钮的边界并把每个按钮添加到内容窗格中。  即使轻量按钮在重量按钮之前添加到内容窗格中,轻量按钮也仍在重量按钮下显示。...然后遭到把该面板添加到内容窗格中,使这个重量面板在第二个重量按钮之后 ,在第三个重量按钮之前。结果,轻量按钮具有与它们所在的面板相同的层序,它们在第二个重量按钮之下,第三个重量按钮之上显示。  ...图2-12所示的小应用程序有一个按钮和一个进度条。当激活按钮后,就开始模仿获取信息的长操作。当获取了信息(即一个integer值)后,就用该信息来更新小应用程序的进度条。  ...如果在另一个操作能够在另一个线程上执行之前必须从一个组件获取信息,则InvokeAndWait方法是很有用的。   例如,例2-14列出的小应用程序总是更新进度条的值而不管该新值是否与当前的值相同。

    2.5K20

    java swing开发窗体程序开发(一)GUI编程

    [这个是关闭整个程序,将会关闭所有窗口] } 需要注意的是,在设置位置和大小时,即setBounds,一共有4个参数,前面两个是坐标信息,即x,y坐标。...: 其的双参构造方法:第一个是菜单项名字,第二个是菜单项图标 /** * 创建一个带菜单条,菜单项,子菜单的窗口 */ public class MainForm extends JFrame...然后实例化这个继承至JFrame的类,才看的到。 1:JPanel面板:常用JPanel作为一个面板,最普通的面板,向该面板中添加组件。...getLayer(Component c);//可以获得一个组件的Layer (五)设置布局 即组件在面板上的布局 容器/面板通过调用setLayout(布局对象)来设置布局 1:FlowLayout...然后c调用自己setBounds来设置 6:Box布局:盒子布局 盒子布局一共有两种,1是水平盒子Box.creatHorizontalBox()。

    3K30

    JRadioButton和JCheckBox

    通常情况下,单选按钮(JRadioButton)显示一个圆形图标,并且在该图标旁设置一些说明文字,一般将多个单选按钮放置在按钮组中,当用户选中某个单选按钮后,按钮组中其他按钮将被自动取消。...例12-7运行结果 图12.9中,运行程序先创建JFrame窗体,然后创建3个单选按钮,创建按钮组,将单选按钮添加至按钮组,在按钮组中只能有一个按钮处于“开启”状态,然后把单选按钮添加到Panel容器,...复选框(JCheckBox)在开发中使用也非常广泛,它有一个方框图标,附加描述性文字,复选框都提供“选中”与“不选中”两种状态。...(String text) 创建一个以text文本、初始状态未被选定的复选框 public JCheckBox(String text, boolean b) 创建一个以text文本复选框,并设置其最初是否处于选定状态...()); 13 jFrame.setSize(350, 150); 14 // 设置窗体关闭方式 15 jFrame.setDefaultCloseOperation

    3800

    Java一分钟之-Swing基础:JFrame, JPanel, JButton

    Java Swing是Java GUI编程库的一部分,提供了丰富的组件和布局管理器来构建桌面应用程序。在Swing中,JFrame、JPanel和JButton是构建用户界面的基础组件。...本文将介绍这三个组件的用法,常见问题以及如何避免错误,同时提供代码示例。 1. JFrame JFrame是Swing中的顶级容器,用于展示应用程序的主窗口。...通常,你的应用程序会有一个JFrame实例。...避免方法:确保在添加所有组件后调用setVisible(true)。 问题2:忘记设置关闭操作。默认情况下,关闭窗口不会终止应用程序。...按钮没有监听器,就无法响应用户的点击。 避免方法:为JButton添加ActionListener,处理actionPerformed事件。

    34010

    java.awt.swing菜单组件

    ,接下来通过一个案例来演示下拉式菜单的使用,如例12-13所示。...(new FlowLayout()); // 设置布局 31 jFrame.setSize(300, 150); 32 // 设置窗体关闭方式 33...例12-13运行结果 图12.15中,运行程序先创建了JFrame窗体,然后创建菜单栏、菜单、菜单项,调用setJMenuBar(JMenuBar menuBar)方法将菜单栏添加进窗体,在“退出”菜单项中添加事件监听...例12-14中,先创建了JFrame窗体,然后创建菜单、菜单项,在“退出”的菜单项中添加事件监听,点击“退出”窗体就会关闭,最后为JFrame窗体添加鼠标点击事件监听器,实现右键弹出菜单的效果。...,还需要传入一个一维数据作为列标题,接下来通过一个案例来演示JTable类的使用,如例12-15所示。

    13910

    Swing常用组件

    这个方法的返回值是一个Class对象,它提供了有关对象所属类的信息。Class类有许多有用的方法,可以用来获取类的名称、包名、超类等信息,还可以通过反射来获取类的字段、方法和构造函数等。...以下是一个示例代码,展示了如何使用getClass()方法来获取对象的运行时类: public class Main { public static void main(String[] args...它们都被添加到一个JPanel中,并且通过ButtonGroup对象进行分组,以确保只能选择一个选项。当选择一个选项时,会显示相应的信息在JLabel中。...在这个示例中,我们使用了DefaultListModel来保存项目列表,并将其作为参数传递给JList构造函数。然后,我们创建了两个按钮,一个用于添加项目,另一个用于删除选定的项目。...当点击添加按钮时,会弹出一个对话框,要求用户输入新项目的名称,并将其添加到列表中。当点击删除按钮时,会删除选定的项目。整个界面使用JPanel来组织,并且使用了JFrame作为窗口容器。

    11710

    Java-GUI编程之Swing组件

    为组件设置边框 很多情况下,我们常常喜欢给不同的组件设置边框,从而让界面的层次感更明显,swing中提供了Border对象来代表一个边框,下图是Border的继承体系图: ​ 特殊的Border:...上述API中add(Action a)这个方法比较难理解,为什么呢,之前说过,Action接口是ActionListener的一个子接口,那么它就代表一个事件监听器,而这里add方法是在给工具条添加一个工具按钮...: 创建一个适用于该容器的组件(例如,在工具栏中创建一个工具按钮); 从 Action 对象中获得对应的属性来设置该组件(例如,通过 name 来设置文本,通过 lcon 来设置图标) ; 把Action...该方法返回用户单击了 哪个按钮 showInputDialog/showInternalInputDialog 输入对话框,提示要求输入某些信息,类似于 JavaScript的 prompt 函数。...,信息可以是字符串、组件、图片等 title:当前对话框的标题 optionType:当前对话框上显示的按钮类型:DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION

    2.3K20

    JPasswordField和JTextArea可视化组件

    表12.12中列举出了JPasswordField类的构造方法,接下来通过一个案例来演示JPasswordField类的使用,如例11-21所示。...300, 150); 18 // 设置窗体关闭方式 19 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);...例12-11运行结果 图12.13中,运行程序先创建了JFrame窗体,然后创建了JPasswordField密码框并设置内容为“www.3adazuo.cn”,调用setEchoChar(Char char...)方法设置回显字符为“*”,增加标签对象jLable,将标签对象和将密码框添加到JFrame窗体,接着创建一个清空按钮将其添加到JFrame窗体。...例12-12运行结果 图12.14中,运行程序先创建了JFrame窗体,然后创建了JTextArea文本域并设置内容为“AAA软件教育,Swing学习案例,可以自动换行的文本域组件”,调用setLineWrap

    10010

    java swing一篇轻松学习(高考后可以自学)

    1、swing窗口和面板容器 窗口:(JFrame) 这里是类继承【JFrame】,然后完成基本设置,一定要显示true,不然看不见。...(Container contentPane) 设置 contentPane 属性 setDefaultCloseOperation(int operation) 设置用户在此窗体上单击“关闭”按钮时默认执行的操作...,就是左上角显示的标题"); //设置窗口显示尺寸 setSize(666,200); //设置窗口是否可以关闭 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...) 设置按钮的键盘快捷键,所设置的快捷键在实际操作时需要结合 Alt 键进行实现 void setPressedIcon(Icon icon) 设置按下按钮时的图标 void setSelectedIcon...","新建"); toolBar.add(button); button=makeNavigationButton("test",OPEN,"打开一个文件","打开");

    9.6K10

    java swing入门教程_java swing基础(菜鸟教程学习)

    createAndShowGUI(){ //创建一个漂亮的外观风格 JFrame.setDefaultLookAndFeelDecorated(true); //创建及设置窗口 JFrame frame...创建一个窗口对象frame,然后设置关闭建 JFrame frame = new JFrame(“Login Example”); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...JFrame中指定位置,面板中我们可以添加文本字段,按钮及其他组件 //哎哟,说了一大堆,其实就是可以在窗口里面添加东西啦 //当然前提是用JPanel创建了一个面板对象panel,因为我们要添加只能通过这个面板...JFrame java的GUI程序的基本思路是以JFrame为基础,说白了就是窗体屏幕它是屏幕上window的对象,能够最大化,最小化,关闭。...可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在显示区内垂直居中对齐。默认情况下,只显示文本的标签是开始边对齐。而只显示图像的标签则水平居中对齐。

    2.6K20

    12.6事件处理

    例如,在用户界面上有一个按钮,当用户将鼠标移动到按钮上并单击时,就触发了一个“按钮单击”事件,然后由该命令按钮中的代码来完成相应的操作。因此,事件处理技术是用户界面程序设计中一项重要的技术。...要创建一个窗口菜单,首先要在窗口中设置一个菜单栏对象JMenuBar,再在菜单栏上添加若干个菜单对象JMenu,每个菜单对象上再添加若干个菜单项。...(2) Java提供的 是专门处理窗体的事件监听接口,一个窗口的所有变化,如窗口的打开、关闭等都可以使用这个接口进行监听。...4.编程题 (1) 在JFrame窗体中添加5个按钮,使用BorderLayout布局管理器使5个按钮分布在东西南北中,在缩放或扩大界面时,南和北按钮总是保持最佳高度。...(2) 在JFrame窗体下部添加5个按钮,分别为显示上一张、下一张和1、2、3,控制窗体上部显示的红、蓝、绿颜色卡片,使用CardLayout布局管理器实现如上效果。

    13110
    领券