Setbounds java что это

Что такое setBounds и как его использовать?

Я не могу найти что-либо на setBounds, для чего он нужен, или какова его функция. Может ли кто-нибудь меня уладить? Большое спасибо!

ОТВЕТЫ

Ответ 1

Ответ 2

setBounds используется для определения ограничивающего прямоугольника компонента. Это включает в себя положение и размер.

Используется в нескольких местах в рамках.

По большей части вы никогда не должны называть его. Вместо этого вы должны использовать соответствующие менеджеры макетов и дать им возможность определить лучший способ предоставить информацию этому методу.

Ответ 3

setBounds

новый размер определяется шириной и высотой. Параметры:

Это обычно работает только в том случае, если диспетчер компоновки/компоновки отсутствует, т.е. null.

Ответ 4

Я также предоставил источник, пожалуйста, проверьте его.

Перемещает и изменяет размер этого компонента. Новое расположение верхнего левого угла определяется x и y, а новый размер определяется шириной и высотой. Этот метод изменяет информацию, связанную с компоновкой, и, следовательно, делает недействительной иерархию компонентов.

Параметры:

Ответ 5

Собственно, компонент Swing имеет несколько измерений, например:

Если вы используете диспетчер компоновки, менеджер раскладки должен выложить свои компоненты с учетом выбранного вами размера и убедиться, что comonent никогда не становится меньше его минимального размера или больше его максимального размера.

В этом случае layoutManager вызовет setSize (или setBounds), и вы не сможете реально управлять позицией или размером компонента.

Весь смысл использования диспетчера компоновки состоит в том, чтобы иметь независимый от платформы и размер окна способ компоновки ваших компонентов автоматически, поэтому вы не ожидаете вызывать setSize из вашего кода.

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

Ответ 6

Как работает интерфейс Java Swing UI, для каждого JPanel всегда существует LayoutManager, который определяет, где именно разместить ваши компоненты. Каждый менеджер макетов работает по-разному, поэтому, если вы используете, например, BorderLayout, setBounds() не используется LayoutManager, вместо этого размещение компонентов определяется по восточному, западному, южному, северному, центральному.

Для NullLayoutManager (если вы использовали new JPanel(null) ), каждый компонент должен иметь координату x и y. Stupid Sidenote: если ваш пользовательский интерфейс будет трехмерным, также будет координата z.

Итак, с помощью public void Component.setBounds(int x, int y, int width, int height) вы указываете, где находится ваш компонент, и сколько пикселей оно велико и высоко.

Ответ 7

Метод пакета определяет размер кадра так, чтобы все его содержимое находилось на уровне или превышало их предпочтительные размеры. Альтернативой pack является установка размера фрейма явным путем вызова setSize или setBounds (который также устанавливает местоположение фрейма). В общем случае использование пакета предпочтительнее вызова setSize, поскольку пакет оставляет диспетчер компоновки фреймов, отвечающий за размер кадра, а менеджеры макетов хорошо подходят для зависимостей платформы и других факторов, влияющих на размер компонента.

параметры setBounds: (int x, int y, int width, int height) x и y определяют положение/местоположение, а ширина и высота определяют размер/размер кадра.

Источник

Что такое setBounds и как его использовать?

Я не могу найти что-либо на setBounds, для чего он нужен, или какова его функция. Может ли кто-нибудь меня уладить? Большое спасибо!

setBounds используется для определения ограничивающего прямоугольника компонента. Это включает в себя положение и размер.

Используется в нескольких местах в рамках.

    Он используется менеджером компоновки для определения положения и размера компонента в нем родительского контейнера.
    Он используется подсистемой краски для определения границ отсечения при рисовании компонента.

По большей части вы никогда не должны называть его. Вместо этого вы должны использовать соответствующие менеджеры макетов и дать им возможность определить лучший способ предоставить информацию этому методу.

новый размер определяется шириной и высотой. Параметры:

Это обычно работает только в том случае, если диспетчер компоновки/компоновки отсутствует, т.е. null.

Я также предоставил источник, пожалуйста, проверьте его.

Перемещает и изменяет размер этого компонента. Новое расположение верхнего левого угла определяется x и y, а новый размер определяется шириной и высотой.
Этот метод изменяет информацию, связанную с компоновкой, и, следовательно, делает недействительной иерархию компонентов.

Параметры:

Собственно, компонент Swing имеет несколько измерений, например:

Если вы используете диспетчер компоновки, менеджер раскладки должен выложить свои компоненты с учетом выбранного вами размера и убедиться, что comonent никогда не становится меньше его минимального размера или больше его максимального размера.

В этом случае layoutManager вызовет setSize (или setBounds), и вы не сможете реально управлять позицией или размером компонента.

Весь смысл использования диспетчера компоновки состоит в том, чтобы иметь независимый от платформы и размер окна способ компоновки ваших компонентов автоматически, поэтому вы не ожидаете вызывать setSize из вашего кода.

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

Источник

Менеджеры расположения Layout

Менеджер расположения (layout manager) определяет, каким образом на форме будут располагаться компоненты. Независимо от платформы, виртуальной машины, разрешения и размеров экрана менеджер расположения гарантирует, что компоненты будут иметь предпочтительный или близкий к нему размер и располагаться в том порядке, который был указан программистом при создании программы.

На странице представлено описание следующих менеджеров расположения и примеров :

Исходные коды примеров различных менеджеров расположения, рассмотренных на странице можно скачать здесь (13.4 Кб).

В Swing менеджер расположения играет еще большую роль, чем обычно. Он позволяет не только сгладить различия между операционными системами, но к тому же дает возможность с легкостью менять внешний вид приложения, не заботясь о том, как при этом изменяются размеры и расположение компонентов.

Поддержка менеджеров расположения встроена в базовый класс контейнеров java.awt.Container. Все компоненты библиотеки Swing унаследованы от базового класса JComponent, который, в свою очередь, унаследован от класса Container. Таким образом, для любого компонента Swing можно установить менеджер расположения или узнать, какой менеджер им используется в данный момент. Для этого предназначены методы setLayout() и getLayout().

Конечно, изменять расположение желательно только в контейнерах, которые предназначены для размещения в них компонентов пользовательского интерфейса, то есть в панелях (JPanel) и окнах (унаследованных от класса Window). Не стоит менять расположение в кнопках или флажках, хотя такая возможность имеется. В стандартной библиотеке Java существует несколько готовых менеджеров расположения, и с их помощью можно реализовать абсолютно любое расположение.

Вызов менджера расположения, revalidate

Контейнер окна вызывает методы менеджера расположения каждый раз при изменении своих размеров или при первом появлении на экране. Кроме этого, можно программно запросить менеджер расположения заново расположить компоненты в контейнере: для этого служит так называемая проверка корректности (валидация) контейнера и содержащихся в нем компонентов. Проверка корректности очень полезна, если интерфейс приложения меняется динамически. Например, если динамически меняются размеры компонентов (во время выполнения программы изменяется текст надписи или количество столбцов таблицы — все это приведет к изменению размеров компонентов). После изменений компонентам может не хватать прежних размеров или наоборот, прежний размер будет для них слишком велик. Для этого и предназначена проверка корректности. Выполнить проверку корректности для любого компонента Swing, будь это контейнер или отдельный компонент, позволяет метод revalidate(), определенный в базовом классе библиотеки JComponent.

Менеджер расположения размещает добавляемые в контейнер компоненты в некотором порядке согласно реализованного в нем алгоритма, и определяет их некоторый размер. При этом он обычно учитывает определенные свойства компонентов :

Описание бизнес-логики работы менеджера расположения

Логика работы менеджера расположения происходит следующим образом : он ждет прихода сигнала от контейнера окна, требующего расположить в нем компоненты. Этому соответствует вызов метода layoutContainer() интерфейса LayoutManager. В методе layoutContainer() и происходит основная работа по расположению компонентов в контейнере.

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

Ниже представлен пример разработки менеджера вертикального расположения компонентов VerticalLayout. Он располагает компоненты вертикально с расстоянием между ними в 5 пикселов и использует для всех компонентов предпочтительный размер.

Менеджер расположения VerticalLayout реализует интерфейс LayoutManager. Самым важным методом является layoutContainer(), который определяет расположения всех компонентов, содержащиеся в контейнере. Алгоритм функционирования менеджера расположения не сложный : размещение компонентов по вертикали, отделяя их друг от друга расстоянием в 5 пикселов; все компоненты имеют предпочтительный размер. Чтобы реализовать алгоритм выполняются следующие шаги :

Таким образом, менеджер VerticalLayout разместит все компоненты контейнера друг над другом на расстоянии в 5 пикселов. Следует обратить внимание, что компоненты отделены и от левой границы контейнера.

Метод addLayoutComponent() предназначен для добавления компонентов в список менеджера расположения, а метод removeLayoutComponent() для удаления компонентов из списка. addLayoutComponent() позволяет ассоциировать с компонентом строку, которая может быть использована менеджером расположения как рекомендация относительно того, где именно необходимо разместить данный компонент. Наш пример менеджера расположения в отличие от BorderLayout не поддерживает подобных рекомендаций.

Две функции менеджера (предпочтительный preferredLayoutSize() и минимальный minimumLayoutSize()) сообщают размеры контейнера. Для нашего простого менеджера расположения минимальный и предпочтительный размеры контейнера совпадают, их вычисляет метод calculateBestSize(). Для вычисления оптимального размера контейнера в цикле выполняется поиск компонента с самой большой длиной. К найденной длине добавляется 5 пикселов в качестве отступа от левой границы контейнера и получаем оптимальную длину контейнера. Для высоты вычисления чуть сложнее : необходимо сложить высоты всех находящихся в контейнере компонентов, а также прибавлять к ним расстояние в 5 пикселов между всеми компонентами. Полученная сумма и является оптимальной высотой контейнера.

Для тестирования менеджера вертикального расположения в методе main() создаем небольшое окно с рамкой JFrame. Создаем панель с устанавленным менеджером расположения VerticalLayout. В панель добавляется пара кнопок и текстовое поле. Созданную панель размещаем в панели содержимого, после чего окно выводится на экран. На следующем скриншоте представлен интерфейс окна примера использования вертикального менеджера расположения компонентов.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Знание основных принципов работы менеджера расположения позволяет глубже понять технологию размещения компонентов в контейнере при использовании библиотеки Swing.

Полярное расположение BorderLayout

Менеджер расположения BorderLayout иммет отличия от остальных. Чтобы добавить с его помощью компонент в методе add() необходимо использовать дополнительный параметр, который определяет область контейнера для размещения компонента. В таблице перечислены допустимые значения этого параметра.

ЗначениеСтрокаОписание
BorderLayout.NORTHNorthКомпонент располагается вдоль верхней границы окна и растягивается на всю его ширину. Обычно в этом месте размещается панель инструментов.
BorderLayout.SOUTHSouthКомпонент располагается вдоль нижней границы и растягивается на всю ширину окна. Такое положение характерно для строки состояния.
BorderLayout.WESTWestКомпонент располагается вдоль левой границы окна и растягивается на всю его высоту; при этом учитываются размеры северных и южных компонентов, имеющих приоритет.
BorderLayout.EASTEastКомпонент располагается вдоль правой границы окна. В остальном его расположение аналогично западному компоненту.
BorderLayout.CENTERCenterКомпонент помещается в центр окна, занимая максимально возможное пространство.

Рекомендации : на север помещайте панель инструментов вашего приложения. На юг помещайте строку состояния. Оставляйте западные и восточные зоны окна свободными — только в этом случае панель инструментов можно будет перетаскивать. Для главного окна вашего приложения всегда используйте расположение BorderLayout.

Рассмотрим простой BorderLayout пример. В примере создается окно JFrame, в котором менеджер BorderLayout используется по умолчанию. Во все доступные зоны добавляются компоненты :

В примере метод установки менеджера расположения setLayout() не вызывался. В окнах JFrame (также в окнах JWindow и JDialog) расположение BorderLayout применяется автоматически c принимаемой по умолчанию константой Center. При использовании строк в качестве параметров метода add() надо быть внимательным. Со строкой легко сделать трудно обнаруживаемую ошибку, в то время как ошибку при использовании констант сразу же обнаружит компилятор.

Интерфейс примера BorderLayout представлен на следующем скриншоте.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

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

Последовательное расположение FlowLayout

Менеджер последовательного расположение FlowLayout размещает компоненты в контейнере слева направо, сверху вниз. При полном заполнении компонентами строки контейнера FlowLayout переходит на следующую строку вниз. Данное расположение устанавливается по умолчанию в панелях JPanel. Основным свойством FlowLayout является определение предпочтительного размера компонентов. Например, размер метки с текстом JLabel соответствует размеру текста. Рассмотрим простой пример FlowLayout :

Конструктор класса FlowLayout имеет три перегруженные версии: без параметров, с параметрами выравнивания компонентов, с параметрами выравнивания компонентов и расстояний между ними. В примере использована вторая версия, устанавливающая последовательное расположение по центру.

На следующем скриншоте показан интерфейс программы для двух разных размеров окна по горизонтали.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

На правом скриншоте размер окна не позволил менеджеру FlowLayout разместить компоненты в одной строке, и один компонент сместился в следующую строку.

При последовательном расположении менеджер FlowLayout всегда сохраняет предпочтительный размер компонентов. Если места в контейнере становится мало, то FlowLayout просто прячет «лишние» компоненты, а не уменьшает их размеры.

Также к важным свойствам менеджера расположения FlowLayout следует отнести то, что при вызове метода preferredLayoutSize() или minimumLayoutSize(), позволяющего узнать предпочтительный и минимальный размеры контейнера, в котором этот менеджер действует, метод возвращает размер, соответствующий ситуации расположения всех компонентов в одну строку. Это особенно важно при совмещении последовательного расположения с другими вариантами расположения. Вследствие этого свойства менеджеры других вариантов расположения будут стараться найти достаточно места для размещения компонентов в одну строку.

Поэтому использовать последовательное расположение следует только в контейнере, где достаточно места, или там, где контейнеру некуда будет «прятать» свои компоненты. Пример совмещении последовательного расположения с табличным представлен на этой странице здесь. Тем не менее, этот простотой менеджер расположения FlowLayout очень хорош при организации несложных вариантов расположения.

Табличное расположение GridLayout

Менеджер расположения GridLayout представляет контейнер в виде таблицы с ячейками одинакового размера. Количество строк и столбцов можно указать в конструкторе. Имеется возможность задать произвольное количество либо строк, либо столбцов, но не одновременно. Все ячейки таблицы имеют одинаковый размер, равный размеру самого большого компонента, находящегося в таблице.

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

Интерфейс работы программы представлен на следующем скриншоте.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Если произвольно увеличить размер окна, то менеджер расположения GridLayout также занимает все место, доступное в данный момент в окне, и пропорционально увеличивает размеры компонентов. Если уменьшить окно, то GridLayout также пропорционально уменьшит размеры компонентов. Основные свойства менеджера табличного расположения :

Чаще всего совмещают панели с различными менеджерами расположения для получения необходимого интерфейса окна. В следующем примере совмещаем менеджер табличного расположения компонентов GridLayout с менеджером последовательного расположения FlowLayout, которое никогда не делает содержащиеся в нем компоненты больше их предпочтительного размера. Для этого создадим элемент пользовательского интерфейса, встречающийся практически в любом диалоговом окне, а именно строку кнопок (кнопки ОК и Отмена). Табличное расположение придаст кнопкам одинаковый размер, а последовательное расположение не даст им «расплыться» и заодно выровняет их по правому краю.

Пример совмещения табличного GridLayout и последовательного FlowLayout расположения компонентов

В данном примере как бы не изменять размер окна полярное расположение заставит панель с кнопками разместиться вдоль нижней границы окна, а последовательное расположение заставит их прижаться к правому краю. Интерфейс работы программы представлен на следующем скриншоте.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Менеджер расположения GridBagLayout

Менеджер расположения GridBagLayout подобно табличному менеджеру устанавливает компоненты в таблицу. Но он дает возможность определять для компонентов разную ширину и высоту колонок и строк таблицы. Фактически GridBagLayout позволяет получить абсолютно любое расположение компонентов.

Пример менеджера расположения GridBagLayout

При использовании менеджера расположения GridBagLayout необходимо настраивать класс GridBagConstraints для каждого добавляемого компонента. Это существенно усложняет процесс разработки. Поэтому GridBagLayout используется большей частью при автоматизированной разработке интерфейса, при которой мышью указывается расположение компонентов, а система требуемым образом настраивает менеджер GridBagLayout.

Пользовательский интерфейс примера GridBagLayout представлен на следующих скриншотах. На нижнем скриншоте представлен интерфейс для уменьшенного размера окна.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Менеджер расположения CardLayout

Менеджер CardLayout можно использовать для создания так называемых вкладок (tabs), выбирая которые будут избранно открываться разные панели, занимающие одно и то же место в интерфейсе окна. В библиотеке Swing данную задачу можно решить с использованием класса JTabbedPane, организовывающего управление панелями с вкладками.

Пример менеджера расположения CardLayout

Пользовательский интерфейс примера менеджера расположения CardLayout представлен на следующих скриншотах. На верхних скриншотах представлен интерфейс окна для разных размеров. На нижнем скриншоте представлен интерфейс окна для вкладки с тестовым полем.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Менеджер расположения BoxLayout

Пример менеджера расположения BoxLayout

Пользовательский интерфейс примера менеджера расположения BoxLayout представлен на следующих скриншотах. На верхнем скриншоте представлен интерфейс окна с вертикальным расположением компонентов. На нижнем скриншоте компоненты размещены в горизонтальной плоскости.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Менеджер расположения GroupLayout

Менеджер расположения компонентов GroupLayout появился только в Java 6. Он раскладывает компоненты по группам. Группы имеют горизонтальное и вертикальное направление и могут быть параллельными и последовательными. В последовательной группе у каждого следующего компонента координата вдоль оси на единицу больше (имеется в виду координата в сетке), в параллельной – компоненты имеют одну и ту же координату.

Пример менеджера расположения GroupLayout

Интерфейс окна примера менеджера расположения GroupLayout представлен на следующем скриншоте.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Менеджер расположения SpringLayout

Несмотря на универсальность менеджера расположения SpringLayout, действие его весьма специфично и не похоже на действие ни одного из уже рассмотренных выше менеджеров расположения.

С каждым компонентом ассоциируется особый информационный объект SpringLayout, который позволяет задать расстояние (в пикселах) между парой границ различных компонентов. Границ у компонента четыре — это его северная, восточная, западная и южная стороны. Можно задавать расстояние и между границами одного и того же компонента: к примеру, задав расстояние между северной и южной сторонами одного компонента, вы укажете его высоту. По умолчанию все компоненты имеют предпочтительный размер, однако SpringLayout учитывает и два остальных размера, не делая компоненты меньше минимального и больше максимального размеров.

На первом этапе работы менеджера SpringLayout все компоненты находятся в начале координат контейнера и имеют предпочтительный размер. Чтобы разместить их по нужным позициям, обычно проводят следующие действия: первый компонент отделяют некоторым расстоянием от границы контейнера, второй отделяют от первого расстоянием между нужными границами, далее размещают третий компонент и т.д.

Пример менеджера расположения SpringLayout

Интерфейс окна примера менеджера расположения SpringLayout представлен на следующем скриншоте.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Интерфейс диалогового окна авторизации

Интерфейс примера диалогового окна авторизации LoginDialog представлен на следующем скриншоте.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Исходный код примера LoginDialog в виду его большого размера не приводится. Но его можно скачать вместе с остальными примерами.

Источник

What is setBounds and how do I use it?

I cannot find anything on setBounds, what it is for, or what its function actually is. Could someone clear me up on this? Thanks so much!

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

7 Answers 7

setBounds is used to define the bounding rectangle of a component. This includes it’s position and size.

The is used in a number of places within the framework.

For the most part, you should never call it. Instead, you should use appropriate layout managers and let them determine the best way to provide information to this method.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

This is a method of the java.awt.Component class. It is used to set the position and size of a component:

setBounds

Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height. Parameters:

x and y as above correspond to the upper left corner in most (all?) cases.

This generally only works if the layout/layout manager are non-existent, i.e. null.

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

I have also provided the source please check it.

Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height. This method changes layout-related information, and therefore, invalidates the component hierarchy.

Parameters:

Setbounds java что это. Смотреть фото Setbounds java что это. Смотреть картинку Setbounds java что это. Картинка про Setbounds java что это. Фото Setbounds java что это

Actually, a Swing component does have multiple dimensions, as:

SetBounds is a shortcut for setting current size plus location of the widget if you don’t use any layout manager.

If you use a layout manager, it is the responsibility of the layout manager to lay out your components, taking into account the preferred size you set, and ensuring that the comonent never gets smaller than its minimumSize or bigger than its maximumSize.

In this case, the layoutManager will call setSize (or setBounds), and you can not really control the position or dimension of the component.

The whole point of using a layout manager is to have a platform and window-size independent way of laying out your components automatically, therefore you don’t expect to call setSize from your code.

(Personal comment: There are buggy layout managers, I personally hate all of them and rolled my own, which offers the flexibility of MigLayout without the learning curve.)

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *