当前位置: 首页 > 知识库问答 >
问题:

在JPanel中看不到JLayeredPane中的内容

庄子平
2023-03-14
public class BoardPanel extends JPanel{

private JLayeredPane lp;

private BufferedImage imageBoard;
private final int WIDTH = 1000;
private final int HEIGHT = 800;

private ArrayList<Slot> slotSet1;
private ArrayList<Slot> slotSet2;
private ArrayList<Slot> slotSet3;
private ArrayList<Slot> slotSet4;
private CheckerSet ch1;
public  Checker chc;

public BoardPanel(){

    initComponents();

}

private void initComponents(){

    lp = new JLayeredPane();

    setPreferredSize(new java.awt.Dimension(1500, 1000));

    //lp.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
    lp.setBorder(javax.swing.BorderFactory.createTitledBorder("asdadsaddadsadasdadsa"));
    lp.setMaximumSize(new java.awt.Dimension(1124, 904));
    lp.setMinimumSize(new java.awt.Dimension(1124, 904));


    try {
       imageBoard = ImageIO.read(getClass().getResource("/images/board.jpg"));
   } catch (IOException e) {
       System.out.println("file error");
   }

        JLabel label = new JLabel();
        label.setVerticalAlignment(JLabel.TOP);
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setOpaque(true);
        label.setBackground(Color.BLACK);
        label.setForeground(Color.black);
        label.setBorder(BorderFactory.createLineBorder(Color.black));
        label.setBounds(0, 0, 50, 50);

    lp.add(label,JLayeredPane.DEFAULT_LAYER);


}
public void paintComponent(Graphics g){

    //g.drawImage(imageBoard,0,0,null);

}
 public static void main(String[] args){

    JFrame f = new JFrame();

    //GamePanel gp = new GamePanel();
    BoardPanel gp = new BoardPanel();

    f.add(gp);

    //f.getContentPane().add(gamePanel);
    f.setSize(new Dimension(1500, 1000));
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

我该如何解决?谢谢伙计们

共有1个答案

夏学名
2023-03-14

您必须向JLayeredPane添加布局,例如GridLayout。试试这个:

GridLayout gl = new GridLayout(20, 21);
lp.setLayout(gl);

在初始化lp之后。然后您可以将所需的所有组件添加到GridLayout中,例如lp:

gl.add(lp)

布局将管理事物将如何显示;在本例中,它将从GridLayout填充网格,首先是第一行(其中有20行),然后是第二行,以此类推(我不认为您实际上需要20行,就像我的示例代码中那样)

 类似资料:
  • 我见过几个类似的问题,但不幸的是,其中包含的建议并没有完全解决我的问题。 总体目标:我有一个滑块,我想显示在一个窗口的左上角,主要显示一个可视化(这里是“显示”)。滑块应该覆盖在可视化的顶部,没有任何背景。

  • 我正在使用 开发一个 Swing GUI。 有一个 ,其中包含两个 。后来我想在s中显示一些组件,我剪掉了这部分代码,使它更短。 如何将调整为的大小?不起作用,如果没有行设置首选大小,GUI将以最小大小显示。 编辑:我可以更改首选的大小行以适应最大的JPanel,但我提出这个问题是因为我希望< code>JFrame根据< code>JPanel的大小动态调整大小。

  • 我有一个< code>JScrollpane,它包含一个大的< code>JPanel,而< code>JPanel本身包含3个< code>JPanel。这3个< code > JPanel 中的每一个都与< code>JScrollpane具有相同的大小。用户不能滚动。他可以点击一个按钮,看到下一个或上一个< code>JPanel(一次只能看到一个面板,他看不到一个面板的一部分和另一个面板的

  • 问题内容: 将包含图形的添加到时,效果很好。但是,当我尝试添加 其中添加了其他图形的时,它不会显示在中。请参见下面的代码 问题答案: 请注意类的构造函数,使其成为您的习惯,以遵循本示例中所示的顺序。首先向中添加组件,然后再进行调用,例如 ,而不是在此之前。 始终把它当作习惯,每当您覆盖方法时,也要覆盖方法。 并始终像在EDT- 事件调度线程中那样发出呼叫。请阅读Swing中的Concurrency

  • 问题内容: 我想在一个简单的Docker容器中运行Django。 首先,我使用Docker-file构建了我的容器。没有什么特别的(只有FROM,RUN和COPY命令) 然后我用命令运行容器 输入我的容器: 运行Django服务器: 得到了: 但是当我转到127.0.0.1:8000时,我什么也看不到: 没有Nginx或其他工作服务器。 我究竟做错了什么? 更新1(Dockerfile) 问题答案

  • 问题内容: 我有个问题。我想制作一个摆动形式,当单击按钮时,他将面板(及其内容)向左滑动,以便右侧的面板将其替换为平滑效果。 我试图做一会儿如何检查面板的大小,然后最小化它并显示下一个这样的样子: 我在C#中使用了此技巧,但在Application.DoEvent();中使用了此技巧。(显然,它在Java上不可用)。 无论如何,我可以制作2个或更多面板的幻灯片效果吗? 顺便说一句:对不起,我的英语