[英]Java Swing. Need to open 3 separate windows
假設在框架中拉起3個帶有不同標簽和字符串的不同窗口。 以下是預計輸出的圖片
我有三節課。
P1Driver用於主
-------------------------------------------------- -------- P1Panel類如下:
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構造函數作為參數傳遞
我遇到的P1Frame類很難。 在構造函數中,我想制作一個P1Panel對象並將其添加到P1Frame中。 我想我需要將字符串作為參數傳遞給P1Frame構造函數,然后將字符串傳遞給P1Panel?
我相信我的Driver類也是正確的,因為我只是將main放在這里並設置項目的大小和可見性。
我相信我的解決方案很小,但是我不確定如何解決。 當我按原樣運行該程序時,它將無限運行,沒有彈出窗口。
在P1Panel類中有一個無限遞歸的構造函數,這就是為什么程序卡住的原因。 只需刪除線
add(new P1Panel(s0));
當您在構造函數中執行此行時,您實際上是在通過以下方式再次調用它:
new P1Panel(s0)
因此,構造函數永遠不會返回,並且會繼續遞歸調用自身。 另外,為什么不將任何Swing組件添加到P1Panel? 沒有Swing組件,它將為空。 如果要在面板內顯示字符串,建議您在構造函數中執行以下操作。
setLayout(new BorderLayout());
JLabel label = new JLabel(s0);
add(label, BorderLayout.CENTER);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.