Как мне создать компонент, который автоматически изменяет размеры в позиции Borderlayout North - PullRequest
0 голосов
/ 27 июля 2010

Я хочу создать JLabel (содержащий изображение) в северной позиции макета границы, который автоматически изменяет размеры до длины, соответствующей предпочтительной ширине компонента в центральной позиции макета границы.

Единственный способ сделать это в настоящее время - это создать еще одну панель в северном положении и добавить метку в центральное положение этой панели.

Есть ли способ сделать это без дополнительной панели?

Ответы [ 2 ]

1 голос
/ 27 июля 2010

Нет необходимости добавлять дополнительную панель, так как я вижу, что вам нужна только метка на севере (т.е. сверху).Компоненты, добавленные к северу в borderlayout, будут занимать полную ширину, а высота будет предпочтительной высотой компонента.Это зависит от различных факторов.

Вам просто нужно позаботиться о том, чтобы текст надписи и изображение были в центре.Посмотрите на выравнивание API метки для того же.

Детали: http://www.ehow.com/way_5579409_java-borderlayout-tutorial.html

например

http://www.java2s.com/Tutorial/Java/0240__Swing/1340__BorderLayout.htm

http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/layout/border.html

0 голосов
/ 27 июля 2010

Ну, я не уверен, что понимаю вопрос.JLabel не "саморазмеряет" себя.Размер ярлыка равен размеру значка, добавленного к ярлыку.Таким образом, размер изображения не изменится, даже если ширина изменится.

Возможно, вы можете использовать:

label.setAlignmentX(...);
label.setHorizontalAligment(...);

Для горизонтального центрирования метки на севере панели, если этоВаш вопрос:

Почему бы вам не опубликовать свою текущую работу SSCCE , которая показывает, что вы делаете.Кроме того, в чем проблема с использованием второй панели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...