Java 如何在调整框架大小时自动将JFrame中使用的组件居中?

Java 如何在调整框架大小时自动将JFrame中使用的组件居中?,java,swing,jframe,layout-manager,jcomponent,Java,Swing,Jframe,Layout Manager,Jcomponent,我希望我的小部件位于JFrame的中心,而不管它的大小(意味着框架大小是小还是大,组件都应该位于框架的中心) 如何在调整框架尺寸时动态地将组件设置在中心位置 因此,请告诉我如何动态设置位于中心的小部件 java中的帧大小调整 Swing没有小部件 我希望我的小部件位于jframe的中心,而不管它是什么 大小(意味着jframe的大小应该是小的,或者是更大的小部件应该是小的) 框架的中心) 使用最简单,按比例调整大小可以使用 1.取决于JFrames border和widge

我希望我的小部件位于
JFrame
的中心,而不管它的大小(意味着框架大小是小还是大,组件都应该位于框架的中心)

如何在调整框架尺寸时动态地将组件设置在中心位置

因此,请告诉我如何动态设置位于中心的小部件 java中的帧大小调整

  • Swing没有小部件
我希望我的小部件位于jframe的中心,而不管它是什么 大小(意味着jframe的大小应该是小的,或者是更大的小部件应该是小的) 框架的中心)

  • 使用最简单,按比例调整大小可以使用


1.取决于JFrames border和widgets border之间的空间是否保持不变或大小是否成比例,2。投票关闭的范围太广,尝试在Jfram中使用拆分容器,在重新调整大小后重新排列其小部件window@mKorbel我没听懂你说的话,你能不能说出来。我只想知道,如果框架是任何尺寸的,如何使我的假发保持在框架的中心?好的,你能给我提供一个很好的例子吗?你能告诉我你在使用哪个IDE吗?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class JFrameAndBorderLayout {

    private JFrame frame = new JFrame("JFrame and BorderLayout");
    private JPanel panelWest = new JPanel();
    private JPanel panelEast = new JPanel();
    private JPanel panelNorth = new JPanel();
    private JPanel panelSouth = new JPanel();
    private JPanel panelCenter = new JPanel() {
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(400, 300);
        }

    };

    public JFrameAndBorderLayout() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panelWest, BorderLayout.WEST);
        frame.add(panelEast, BorderLayout.EAST);
        frame.add(panelNorth, BorderLayout.NORTH);
        frame.add(panelSouth, BorderLayout.SOUTH);
        panelCenter.setBackground(Color.RED);
        frame.add(panelCenter);
        frame.pack();
        frame.setLocation(150, 150);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrameAndBorderLayout fs = new JFrameAndBorderLayout();
            }
        });
    }
}