簡體   English   中英

java嵌套在彼此之上的面板打印

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM