首页
学习
活动
专区
工具
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的信息,并显示在控制台上。

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

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

相关·内容

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

《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()。

    2.8K30

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

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

    23410

    Swing常用组件

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

    9810

    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.2K20

    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.4K10

    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.5K20

    Java-GUI 编程之 Swing

    例如,按钮JButton有一个维护其状态信息的模型ButtonModel对象 。 Swing组件的模型是自动设置的,因此一般都使用JButton,而无须关心ButtonModel对象。...由于 Swing采用 MVC 模式维护各组件,所以 当组件的外观被改变时,对组件的状态信息(由模型维护)没有任何影响 。...因 此,Swing可以使用插拔式外观感觉 (Pluggable Look And Feel, PLAF)控制组件外观,使得 Swing图形界面一个平台上运行时能拥有不同的外观,用户可以选择自己喜欢的外观...相对于 AWT 组件, Swing 组件具有如下 4 个额外的功能 : 可以为 Swing 组件设置提示信息。使用 setToolTipText()方法,为组件设置对用户有帮助的提示信息 。...4.关闭JFrame窗口,也无需监听器,只需要调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法即可,更简单。

    2.4K10

    【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 )

    一、Canvas 中绘制超大图片要点 ---- 1、设置 JFrame 窗口自动关闭 创建 JFrame 窗口后 , 通过调用 JFrame#setDefaultCloseOperation 可以设置窗口自动关闭...; // 创建 JFrame 窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮...关闭窗口并退出应用 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 2、获取并绘制图片 AWT 中 , 使用 Toolkit.getDefaultToolkit...}); 鼠标移动时 , 记录 移动后的位置 与 当前 ( startX , startY ) 位置 的差值 , 将 该差值累加到 ( startX , startY ) 坐标中 ; 计算一个...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用

    1.4K20

    java学习之路:31.java常用布局管理器(绝对,流,边界,网格)

    1.绝对布局 绝对布局,就是可以硬性指定组件容器中的位置和大小,使用绝对坐标指定组件的位置与大小。...(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭方式 } public static void main(String[] args) { new c1().windows...2.流布局管理器 整个容器中的布局像“流“一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。...FlowLayout中的第一个参数表示组件每一行的具体摆放位置,可以有三种,值分别为: 0:左对齐 1:居中 2:右对齐 后面两个参数分别以像素为单位指定组件之间的水平间隔和垂直间隔。...2.边界布局管理器 默认不指定窗体布局的情况下,Swing组件的布局模式是边界布局管理器,如果在容器中只添加了一个标签组件,这个标签将被放置在窗体中间,而且整个组件占据窗体的所有空间,边界布局管理器还可以将容器划分为东

    1.2K21

    如何在Swing组件中使用HTML

    例如,以下代码创建一个标签,然后设置其字体和颜色: label = new JLabel("A label"); label.setFont(new Font("Serif", Font.PLAIN,...示例:HtmlDemo 名为HtmlDemo的应用程序允许您通过标签上设置文本来使用HTML格式播放。您可以HtmlDemo.java中找到此程序的完整代码。这是HtmlDemo示例的图片。...左侧的文本区域中编辑HTML格式,然后单击“更改标签”按钮。右边的标签显示结果。 从左侧的文本区域中删除html标签。标签的文本不再解析为HTML。...示例2:ButtonHtmlDemo 让我们看看另一个使用HTML的示例。 ButtonHtmlDemo将字体,颜色和其他文本格式添加到三个按钮。...左右按钮具有多行和文本样式,并使用HTML实现。另一方面,中间按钮仅使用一行,字体和颜色,因此不需要HTML。

    2.5K20

    JAVA学习Swing章节标签JLabel中图标的使用

    中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标 * 重点是标签含有文本字符串和图标 * * 2:标签可以显示一行只读文本,一个图像或带图像的文本,它并不能产生任何类型的事件 *...* 带图标带文字,并且设定标签内容的水平对其方式 * * 4:Swing上面的图标可以放置在按钮,标签,等组件上面,用于描述组件的用途 * * 5:Swing中通过Icon接口实现创建图表...JFrame jf=new JFrame();//创建一个JFrame窗口 Container container=jf.getContentPane();//将窗口转换为容器...ImageIcon对象,当真正需要设置图片时再使用ImageIcon对象 * 调用setImage(Image image)方法操作 * 第二直接从图片源创建图表 * 第三除了可以直接从图片源创建图表之外...(250, 100); jf.setVisible(true); //设置窗体的关闭模式 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE

    1.9K60

    JAVA学习Swing章节流布局管理器简单学习

    ,像流一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。...//FlowLayout第一个参数设置为2每一行组件将按照右对齐排列 for(int i=0;i<10;i++){ //容器中添加10个按钮...setSize(300,200);//设置窗体的大小 setVisible(true);//设置窗体可视化 //设置窗体的关闭方式 setDefaultCloseOperation...* 最后循环中将按钮添加到容器中,并设置组件布局 *2:add()方法提供了容器中添加组件的功能,并同时设置组件的摆放位置 * */ //定义按钮组件上面的文字ESWN...setLayout(new BorderLayout());//设置容器为边界布局管理器 //setLayout()语法为设置布局管理器 //容器中添加按钮

    1K30
    领券