如何在JFrame中居中Jpanel?

时间:2015-01-25 10:17:04

标签: java swing jframe jpanel

有一个扩展JFrame的类。然后进一步JFrame JPanel名为contentPane,此Jpanel包含2个jpanel。如图所示的树。

Here is the Image

我想在JFrame中将 contentPane 置于中心位置,以便在更改JFrame JPanel(contentPane)的大小时保持中心位置。我尝试过不同的Layouts,但没有提出正确的问题。有什么办法吗? 整页图片为here

代码是这样的。

public class Purchases extends JFrame {

    private JPanel contentPane;

public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Purchases frame = new Purchases();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }); 
    }


        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 513, 438);


        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        setLocationRelativeTo(null);



        JPanel panel = new JPanel();
        panel.setBounds(10, 10, 477, 193);
        contentPane.add(panel);
        panel.setLayout(null);

        JPanel panel_1 = new JPanel();
        panel_1.setBounds(10, 214, 477, 174);
        contentPane.add(panel_1);
        panel_1.setLayout(null);

}

此代码是Eclipse自动生成的。我没有找到在JFrame中添加contentPane的位置。

3 个答案:

答案 0 :(得分:3)

将框架的布局设置为GridBagLayout。将您现有的内容包装在另一个JPanel中,将此面板添加到框架

example

请查看Laying Out Components Within a ContainerHow to Use GridBagLayout了解详情

你真的应该避免使用null布局,像素完美布局是现代ui设计中的错觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正

答案 1 :(得分:0)

我为你做了一个样品。根据您的需要进行修改。只是想告诉你你想要什么,正在发挥作用。

let pulsator = Pulsator()
pulsator.radius = 240.0
pulsator.numPulse = 5
viewSearchArea.layer.addSublayer(pulsator)
pulsator.start()

希望这会有所帮助。 : - )

答案 2 :(得分:-1)

我认为您应该设置元素的最大大小&将其设置为对齐中心:

setAlignmentX(JComponent.CENTER_ALIGNMENT);
setMaximumSize(new Dimension(100, 100));

如下所述: How can I properly center a JPanel ( FIXED SIZE ) inside a JFrame?