Java Swing。需要打开3个单独的窗口

Java Swing。需要打开3个单独的窗口,java,swing,user-interface,Java,Swing,User Interface,假设拉起3个不同的窗口,框架中有不同的标签和字符串。以下是预计产出的图片 我有三节课 扩展JPanel的p1面板 扩展JFrame的P1Frame 用于主电路的P1驱动器 -----------------------------p1面板类别如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class P1Panel extends JPanel { private String s

假设拉起3个不同的窗口,框架中有不同的标签和字符串。以下是预计产出的图片

我有三节课

扩展JPanel的p1面板 扩展JFrame的P1Frame 用于主电路的P1驱动器

-----------------------------p1面板类别如下:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class P1Panel extends JPanel
{

    private String s0;
    public P1Panel(String s0){
        {
            add(new P1Panel(s0));
        }
    }
} 
-----------------------这是下面的P1Frame类:

        import java.awt.*;
        import java.awt.event.*;
        import javax.swing.*;
        public class P1Frame extends JFrame
    {
            private String s1;
            public P1Frame (String s1){
                this.s1 = s1;
                {
                    add(new P1Panel(s1));
                }
                P1Frame p1 = new P1Frame(s1);



      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            p1.setSize(300,200);
            p1.setVisible(true);
        }
    }
--------------------这是P1Driver类:

        import java.awt.*;
        import java.awt.event.*;
        import javax.swing.*;
        public class P1Driver
        {
            public static void main(String [] args)
            {
                P1Frame p1 = new P1Frame("This is window 1");
                //JFrame f2 = new JFrame("This is window 2");
                //JFrame f3 = new JFrame("This is window 3");
                p1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                p1.setSize(300,200);
                p1.setVisible(true);        
            }
        }
我相信我的P1Panel类是正确的,因为我调用了一个构造函数并将其添加到它自己。标签中的文本作为参数传递P1Panel构造函数

我的班级让我很难相处。在构造函数中,我想创建一个P1Panel对象并将其添加到P1Frame中。我想我需要将一个字符串作为参数传递给P1Frame构造函数,然后将字符串传递给P1Panel

我相信我的驱动程序类也是正确的,因为我只是把主要的在这里,并设置项目的大小和能见度


我相信我的解决方案很小,但我被卡住了,不确定该怎么做。当我按原样运行程序时,它会无限运行,不会弹出任何内容。

在P1Panel类中有一个无限递归构造函数,这就是程序被卡住的原因。把电话线拔下来

add(new P1Panel(s0));
当您在构造函数中执行这一行时,实际上是通过执行

new P1Panel(s0)
因此构造函数永远不会返回,它会不断递归地调用自己。另外,为什么不在面板中添加任何Swing组件?如果没有Swing组件,它将为空。如果您想在面板中显示字符串,我建议您在构造函数中执行以下操作

setLayout(new BorderLayout());
JLabel label = new JLabel(s0);
add(label, BorderLayout.CENTER);

需要打开3个单独的窗口见:1见2我相信我的修复是一个小的,。。你的问题是关于如何解决这个问题吗到目前为止,我看不出有任何问题。是的,我被困在P1Frame类中,需要一些帮助来解决这个问题