[英]java nested panels printing on top of each other
import java.awt.*;
import javax.swing.*;
public class Panels extends JApplet
{
private Container c = getContentPane();
public void init()
{
BorderLayout bl = new BorderLayout();
setLayout(bl);
add(new JButton("East "), BorderLayout.EAST);
add(new JButton("West "), BorderLayout.WEST);
add(new JButton("North "), BorderLayout.NORTH);
add(new JButton("South "), BorderLayout.SOUTH);
addCenterPanel();
}
void addCenterPanel()
{
JPanel p = new JPanel();
setLayout(new BorderLayout());
add(new JButton("Right "), BorderLayout.EAST);
add(new JButton("Left "), BorderLayout.WEST);
add(new JButton("Up "), BorderLayout.NORTH);
add(new JButton("Down "), BorderLayout.SOUTH);
addInnermostPanel();
}
void addInnermostPanel()
{
JPanel center = new JPanel();
center.setLayout(new BorderLayout());
add(new JButton("> "), BorderLayout.EAST);
add(new JButton("< "), BorderLayout.WEST);
add(new JButton("^ "), BorderLayout.NORTH);
add(new JButton("v "), BorderLayout.SOUTH);
add(new JButton("O"), BorderLayout.CENTER);
}
}
我希望這些面板在彼此之間顯示(在CENTER區域中),但是它們卻在彼此之間打印,並且出於任何原因,我都無法弄清楚Im缺少了什么。 在此先感謝您的幫助
這是您的代碼,應該像這樣;
import java.awt.*;
import javax.swing.*;
public class Panels extends JFrame
{
private Container c = getContentPane();
public void init()
{
BorderLayout bl = new BorderLayout();
setLayout(bl);
setDefaultCloseOperation(3);
setLocationRelativeTo(null);
add(new JButton("East "), BorderLayout.EAST);
add(new JButton("West "), BorderLayout.WEST);
add(new JButton("North "), BorderLayout.NORTH);
add(new JButton("South "), BorderLayout.SOUTH);
add(addCenterPanel(),"Center");
}
JPanel addCenterPanel()
{
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JButton("Right "), BorderLayout.EAST);
p.add(new JButton("Left "), BorderLayout.WEST);
p.add(new JButton("Up "), BorderLayout.NORTH);
p.add(new JButton("Down "), BorderLayout.SOUTH);
p.add(addInnermostPanel(),"Center");
return p;
}
JPanel addInnermostPanel()
{
JPanel center = new JPanel();
center.setLayout(new BorderLayout());
center.add(new JButton("> "), BorderLayout.EAST);
center.add(new JButton("< "), BorderLayout.WEST);
center.add(new JButton("^ "), BorderLayout.NORTH);
center.add(new JButton("v "), BorderLayout.SOUTH);
center.add(new JButton("O"), BorderLayout.CENTER);
return center;
}
public static void main(String ...args){
new Panels().setVisible(true);
}
public Panels(){
init();
pack();
}
}
注意 :我使用JFrame
代替applet。 我也剛剛發布了代碼,因為描述整個程序需要花費很多時間,我認為僅代碼就足夠了。
如果有問題,請在評論中寫下。
在addCenterPanel
您可以將所有組件直接添加到applet本身,而不是添加到JPanel
p
。 該面板未添加到小程序本身。 在addInnermostPanel
,組件再次添加到applet中,而center
JPanel
從不添加到容器中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.