【问题标题】:What is best way to center objects in JPanel horizontally and vertically在JPanel中水平和垂直居中对象的最佳方法是什么
【发布时间】:2014-03-01 13:14:14
【问题描述】:

我正在尝试在 panelMain 的左侧添加一个面板 p1。由于对象不是垂直居中的,所以我尝试在具有 BorderLayout 的 p2 上添加 p1。我想这不是一个好方法,但它甚至不起作用。我没有使用 GridLayout,因为我不希望对象填满整个 JPanel。

JPanel panelMain = new JPanel( new BorderLayout() );

JPanel p1 = new JPanel( new FlowLayout(FlowLayout.CENTER) );
panelText.setPreferredSize( new Dimension( 250, frame.getHeight() ) );
panelText.add( new JLabel( "Name:", SwingConstants.RIGHT) );
panelText.add( new JTextField( "First Last:", 15 ) );
panelText.add( new JLabel( " Tel:", SwingConstants.RIGHT) );
panelText.add( new JTextField( "000-000-0000", 15) );

JPanel p2 = new JPanel( new BorderLayout() );
p2.add( p1, BorderLayout.CENTER );

panelMain.add( p2,BorderLayout.WEST );

【问题讨论】:

  • 你得到了什么输出?
  • 请参阅this answer 了解将组件或容器居中的两种布局(GridBagLayoutBoxLayout)。

标签: java swing jpanel layout-manager


【解决方案1】:

“在 JPanel 中水平和垂直居中对象的最佳方法是什么”

你可以用JPanel 包裹所有东西,然后用GridBagLayout 包裹那个 JPanel 在另一个JPanel

JPanel mainPanel = your main panel
JPanel wrapperPanel = new JPanel(new GridBagLayout());
wrapperPanel.add(mainPanel);
frame.add(wrapperPanel);

示例

import java.awt.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

public class TestCenterGridbagLayout {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                JPanel mainPanel = new JPanel(new GridLayout(3, 3));
                for (int i = 0; i < 9; i++) {
                    mainPanel.add(new JButton("Button"));
                }
                mainPanel.setBorder(new TitledBorder("Main Panel"));

                JPanel wrapperPanel = new JPanel(new GridBagLayout());
                wrapperPanel.setPreferredSize(new Dimension(350, 300));
                wrapperPanel.add(mainPanel);
                wrapperPanel.setBorder(new TitledBorder("Wrapper panel with GridbagLayout"));

                JOptionPane.showMessageDialog(null, wrapperPanel);

            }
        });
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2019-07-19
    相关资源
    最近更新 更多