setAlignmentY не центрирует JLabel в BorderLayout - PullRequest
8 голосов
/ 14 января 2012

новичок в java и новенький для сайта.У меня есть JLabel, добавленный к центральной панели BorderLayout.Я хотел бы, чтобы JLabel был в центре панели;setAlignmentX, кажется, работает, но setAlignmentY не работает (метка появляется в верхней части панели).Вот код:

centerPanel = new JPanel();
centerPanel.setLayout(new BoxLayout(centerPanel,BoxLayout.Y_AXIS));

JLabel label = new JLabel("This should be centered");
label.setAlignmentX(Component.CENTER_ALIGNMENT);
label.setAlignmentY(Component.CENTER_ALIGNMENT);
centerPanel.add(label);

contentPane.add(centerPanel, BorderLayout.CENTER);

Я также пробовал label.setVerticalAlignment (CENTER); безрезультатно.Я искал ответ в API и в Учебниках Java, на этом сайте и через поиск в Google.Спасибо!

Ответы [ 2 ]

19 голосов
/ 14 января 2012

Вы были близки, попробуйте это:

public static void main(String[] args)
{
    JFrame contentPane = new JFrame();
    JPanel centerPanel = new JPanel();
    centerPanel.setLayout(new BorderLayout());

    JLabel label = new JLabel("This should be centered");
    label.setHorizontalAlignment(SwingConstants.CENTER);
    centerPanel.add(label, BorderLayout.CENTER);

    contentPane.add(centerPanel, BorderLayout.CENTER);
    contentPane.pack();
    contentPane.setVisible(true);
}

Одна из многих радостей программирования GUI на Java. Я бы лучше выглянул, если честно.

0 голосов
/ 22 мая 2015

Я попытался выровнять по центру по вертикали JButton, но у меня возникла проблема, это было растянуто.После возни я нашел это работает:

JPanel jpTop = new JPanel(new BorderLayout());
jbStop = new JButton("Cancel");
JPanel extraPanel = new JPanel();
extraPanel.setLayout(new BoxLayout(extraPanel, BoxLayout.X_AXIS));
extraPanel.setAlignmentY(Component.CENTER_ALIGNMENT);
extraPanel.add(jbStop);
jpTop .add(extraPanel, BorderLayout.EAST);

Конечно, это работает и для JLabel.

...