Java 在JFrame的特定区域放置JPanel

Java 在JFrame的特定区域放置JPanel,java,swing,user-interface,layout-manager,null-layout-manager,Java,Swing,User Interface,Layout Manager,Null Layout Manager,很抱歉没有在前一篇文章中添加特定代码。我意识到我做错了什么,但现在我又遇到了另一个问题。我试图在点击一个按钮后将一个JPanel放置在JFrame上的一个特定位置,但什么都没有发生,下面是我的Actionperformed方法的代码 public void actionPerformed(ActionEvent e) { JPanel pa=new JPanel(); frame.getContentPane().setLayout(null

很抱歉没有在前一篇文章中添加特定代码。我意识到我做错了什么,但现在我又遇到了另一个问题。我试图在点击一个按钮后将一个JPanel放置在JFrame上的一个特定位置,但什么都没有发生,下面是我的Actionperformed方法的代码

public void actionPerformed(ActionEvent e) 
    {


          JPanel pa=new JPanel();
          frame.getContentPane().setLayout(null);
          pa.setBackground(Color.yellow);
          pa.setLocation(50,150);
          pa.setSize(150,100);
          pa.setBounds(50,150,150,100);
          pa.setOpaque(true);
          frame.add(pa);


    }                        

有很多方法可以做到这一点

public void actionPerformed(ActionEvent e) 
    {


          JPanel pa=new JPanel();
          frame.getContentPane().setLayout(null);
          pa.setBackground(Color.yellow);
          pa.setLocation(50,150);
          pa.setSize(150,100);
          pa.setBounds(50,150,150,100);
          pa.setOpaque(true);
          frame.add(pa);


    }                        
  • 使用
    设置位置(x,y)
    设置大小(长度、宽度)

  • public void actionPerformed(ActionEvent e) 
        {
    
    
              JPanel pa=new JPanel();
              frame.getContentPane().setLayout(null);
              pa.setBackground(Color.yellow);
              pa.setLocation(50,150);
              pa.setSize(150,100);
              pa.setBounds(50,150,150,100);
              pa.setOpaque(true);
              frame.add(pa);
    
    
        }                        
    
  • 使用
    setBounds(x,y,长度,宽度)

  • public void actionPerformed(ActionEvent e) 
        {
    
    
              JPanel pa=new JPanel();
              frame.getContentPane().setLayout(null);
              pa.setBackground(Color.yellow);
              pa.setLocation(50,150);
              pa.setSize(150,100);
              pa.setBounds(50,150,150,100);
              pa.setOpaque(true);
              frame.add(pa);
    
    
        }                        
    
  • 如果1和2不起作用,请查看布局管理器:

  • public void actionPerformed(ActionEvent e) 
        {
    
    
              JPanel pa=new JPanel();
              frame.getContentPane().setLayout(null);
              pa.setBackground(Color.yellow);
              pa.setLocation(50,150);
              pa.setSize(150,100);
              pa.setBounds(50,150,150,100);
              pa.setOpaque(true);
              frame.add(pa);
    
    
        }                        
    
    我强烈建议你看一看。下面是每一个的链接,我为您推荐的链接旁边有一个星号(*)

    public void actionPerformed(ActionEvent e) 
        {
    
    
              JPanel pa=new JPanel();
              frame.getContentPane().setLayout(null);
              pa.setBackground(Color.yellow);
              pa.setLocation(50,150);
              pa.setSize(150,100);
              pa.setBounds(50,150,150,100);
              pa.setOpaque(true);
              frame.add(pa);
    
    
        }                        
    
    • 用于一般方向(北、南、东、西)

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 将组件放在一行或一列中。它尊重组件请求的最大尺寸,还允许您对齐组件

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 用于实现在不同时间包含不同组件的区域,该区域通常由组合框控制,组合框的状态决定CardLayout显示的面板(组件组)

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 是每个JPanel的默认布局管理器。它只是在一行中布局组件

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 是一个复杂、灵活的布局管理器。它通过将零部件放置在单元网格中来对齐零部件,从而允许零部件跨越多个单元。网格中的行可以具有不同的高度,网格列可以具有不同的宽度

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 只需使一组组件大小相等,并按要求的行数和列数显示它们

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 是为GUI builder工具开发的布局管理器,但也可以手动使用。GroupLayout分别处理水平和垂直布局。布局是为每个标注独立定义的。但是,每个组件需要在布局中定义两次

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      
    • 是一个灵活的布局管理器,专为GUI构建者设计。它允许您指定受其控制的零部件边缘之间的精确关系。例如,可以定义一个零部件的左边缘与另一个零部件的右边缘之间的距离(可以动态计算)。SpringLayout根据一组约束布局其关联容器的子级

    • public void actionPerformed(ActionEvent e) 
          {
      
      
                JPanel pa=new JPanel();
                frame.getContentPane().setLayout(null);
                pa.setBackground(Color.yellow);
                pa.setLocation(50,150);
                pa.setSize(150,100);
                pa.setBounds(50,150,150,100);
                pa.setOpaque(true);
                frame.add(pa);
      
      
          }                        
      

    免责声明:其中大多数是Oracle JavaDoc关于布局管理器的直接引用。

    请添加一些源代码作为具体示例,以便其他人能够提供帮助。现在你的问题就像“出了点问题,我不知道为什么”如果你发布代码,我会很乐意帮助你。@Tommy我在我的帖子中添加了一些代码。我对编码很陌生,所以任何帮助都会很好。@NikhilSrikumar感谢您分享您的代码。我会看看我能做些什么。你想把面板放在哪里?坐标(50150)
    public void actionPerformed(ActionEvent e) 
        {
    
    
              JPanel pa=new JPanel();
              frame.getContentPane().setLayout(null);
              pa.setBackground(Color.yellow);
              pa.setLocation(50,150);
              pa.setSize(150,100);
              pa.setBounds(50,150,150,100);
              pa.setOpaque(true);
              frame.add(pa);
    
    
        }