将 JPanel 定位在 JFrame 中的特定位置

新手上路,请多包涵

我需要帮助将 JPanel 定位到 Jframe 的特定位置。

我在扩展 JFrame 的类中有一个 JPanel,我需要将这个 JPanel 放在特定的 x,y 位置。

是这样的:

 public class Frame extends JFrame {

    public Frame(){

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocation(250, 250);
        this.setSize(300,300);
        this.setVisible(true);

        JPanel panel = new JPanel();
        this.add(panel);
        panel.setLocation(150, 150);
        panel.add(new JButton("Hello!")); // just to show JPanel

    }//Frame()
}//Frame

我不需要为 JPanel 的位置设置 LayoutManager,因为我需要将该 JPanel 放在特定位置(例如示例中的 150,150)。但是,如果我像上面的代码那样执行 panel.setLocation(150,150),则什么也不会发生,并且 JPanel 会保留在框架的北部中心(如果我更改 x,y 数字而不是 150,150)。

它显示如下:

http://i.imgur.com/Te3z0kv.png

原文由 alecarnevale 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

在框架的内容面板中,布局管理器默认为 BorderLayout (NWSE+C)。做:

 this.getContentPanel().setLayout(null);

原文由 Joop Eggen 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 setBounds(new Rectangle(96, 67, 98, 41));你可以这样做……看看这个例子

/**
 * This method initializes this
 *
 * @return void
 */
private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
}

/**
 * This method initializes jContentPane
 *
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(null);
        jContentPane.add(getLoginButton(), null);
    }
    return jContentPane;
}

}

原文由 Konzern 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题