Как сделать кнопки одинакового размера swing

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

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

Как программно изменить размер (и положение) окна другого приложения? Я хотел бы кодировать с помощью Java, и я хочу изменить размер всех windows, а не только тех, которые созданы JVM. Я использую Windows XP. Я хотел бы изменить другие свойства этих windows, если есть больше вариантов.

Я пытаюсь поместить текстовую область в диалоговое окно с помощью Java Swing. У меня есть проблема с установкой размера этого JTextArea. Ширина текстовой области всегда равна всей ширине окна и растягивается вместе с окном, если я изменяю его размер. private void arrangeComponents() < JTextArea.

Из вашего вопроса я думаю, что вы пытаетесь сделать так, чтобы кнопка соответствовала размеру окна. В этом случае вы бы использовали window.add(button, BorderLayout.CENTER);

Если вы пытаетесь иметь несколько кнопок, вам нужно использовать макет. Учебник по созданию GUIs в swing с использованием макетов можно найти здесь .

В общем случае вы можете использовать методы setLocation и setSize . Однако лучше всего, если вы используете менеджер макетов. Проверьте С помощью руководства по менеджерам макетов . В вашем случае по умолчанию используется BorderLayout . Если вам нужен абсолютный макет, вы можете установить его:

Затем необходимо указать размер и положение каждого компонента в этом контейнере.

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

В документах Java api ищите BorderLayout и GridLayout. С них проще всего начать.

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

По умолчанию для JFrame используется BorderLayout, а для JPanel-FlowLayout. Но что касается вашего вопроса, то самый простой способ, который я могу придумать, заключается в следующем :

Надеюсь, это может вам как-то помочь.

Я могу изменить y элемента кнопки custom bar с помощью setBackgroundVerticalPositionAdjustment, но как я могу изменить горизонтальное положение ? [viewController.navigationItem.rightBarButtonItem setBackgroundVerticalPositionAdjustment:50 forBarMetrics:UIBarMetricsDefault];

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

JButton расширяет AbstractButton , который, в свою очередь, расширяет JComponent , поэтому, как и в случае наследования, вы можете использовать все методы, предоставляемые JComponent .

Связанные методы, которые вы должны рассмотреть, являются:

Кроме того, JComponent расширяет Component , что обеспечивает, и вы можете использовать,

смотрите наследование ниже:

Похожие вопросы:

Как реализовать перетаскиваемую вкладку с помощью Java Swing? Вместо статического JTabbedPane я хотел бы drag-and-drop поставить вкладку в другое положение, чтобы переставить вкладки. EDIT .

Мое требование: как изменить размер изображения без потери качества с помощью swing. Я использую компоненты resizer, label, panel. Я использую концепцию изменения размера, в это время изображение.

Я пытаюсь автоматически изменить размер левой части моего приложения. У меня есть JTextField и JTree слева и 3 JButtons справа. Но я просто не знаю,как сделать левую сторону автоматически.

Как программно изменить размер (и положение) окна другого приложения? Я хотел бы кодировать с помощью Java, и я хочу изменить размер всех windows, а не только тех, которые созданы JVM. Я использую.

Я пытаюсь поместить текстовую область в диалоговое окно с помощью Java Swing. У меня есть проблема с установкой размера этого JTextArea. Ширина текстовой области всегда равна всей ширине окна и.

Я могу изменить y элемента кнопки custom bar с помощью setBackgroundVerticalPositionAdjustment, но как я могу изменить горизонтальное положение ? [viewController.navigationItem.rightBarButtonItem.

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

Мне нужно сделать изменяемый размер компонента java swing (JPanel), поэтому, когда я нажимаю на границу этого компонента и перетаскиваю курсор в другое место, компонент меняет размер в зависимости.

Привет :) я делаю свой первый GUI с Java swing, и у меня есть проблема: когда я меняю размер окна, internal components не меняют свой размер. Я использую абсолютную планировку, это может быть важно.

я новичок в java swing, в настоящее время я разрабатываю приложение с использованием java swing, я сталкиваюсь с проблемой, что когда я заполняю свой JList JScrollPane, он отображается на всем моем.

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

От AbstractButton наследуются два основных кнопочных класса: JButton и JToggleButton. Первый служит для создания обычных кнопок с разнообразными возможностями, а второй - для создания радиокнопок (класс JRadioButton) и отмечаемых кнопок (класс JCheckBox). Помимо названных, от AbstractButton наследуется пара классов JCheckBoxMenuItem и JRadioButtonMenuItem, используемых для организации тех меню, пункты которых должны быть оснащены отмечаемыми и радиокнопками.

Класс JButton библиотеки Swing для создания обычных кнопок предлагает несколько различных конструкторов:

Если используется конструктор по умолчанию, т. е. без параметров, то вы получаете абсолютно пустую кнопку. Задав текстовую строку, получите кнопку с надписью. Для создания кнопки с рисунком передайте конструктору ссылку на класс пиктограммы.

Класс JButton содержит несколько десятков методов, основные из которых приводятся в табл. 1, а для того чтобы была более понятна техника их использования, просмотрите листинг 1. Эта маленькая программа базируется на шаблоне, показанном в ╧ 8/98 "Мира ПК" (с. 183, листинг 1).

N.B. Обратите внимание на использование пустой рамки шириной в 15 пикселов, выполненной на основе класса EmptyBorder. Она придает программе эстетичный вид.

В примере, показанном в листинге 1, для размещения компонентов используется менеджер GridBagLayout. Если вы регулярно программируете на Java, то наверняка знакомы с ним, в противном случае обратитесь к документации по JDK.

N.B. Мы не задаем жестко размер окна, а позволяем виртуальной машине Java сделать его оптимальным. А для этого внутри метода main вызывается метод pack, после чего размер окна фиксируется вызовом метода setResizable.

При вызове конструктора класса JButton инициализируется ссылка jbtn. В качестве параметра ему передается строка в кодировке UNICODE, задающая надпись "Образцово-показательная кнопка". Для наглядности инициализация главной кнопки jbtn вынесена в отдельный метод setupButton. Внутри этого метода кнопке присваиваются пиктограммы для нормального, выключенного и нажатого состояний. Затем определяется пиктограмма, отображаемая в том случае, если указатель мыши находится непосредственно над кнопкой. И наконец, с помощью метода setToolTipText кнопке присваивается текст "всплывающей" подсказки.

Отмечаемая кнопка

Класс JCheckBox, как и класс обычной кнопки JButton, наследует методы абстрактной кнопки AbstractButton, поэтому большую часть методов JCheckBox вы найдете в табл. 1. Однако в силу функциональных особенностей у отмечаемой кнопки имеются методы, управляющие флагом включения/выключения (табл. 2).

С помощью отмечаемых кнопок осуществляется управление главной кнопкой jbtn. Поэтому в программу добавлен специальный внутренний класс-адаптер IL, реализующий интерфейс слушателя ItemListener, вызываемый при изменении состояния компонента. Обработка переключения отмечаемых кнопок происходит внутри метода itemStateChanged класса IL. При создании отмечаемых кнопок к каждой из них вызовом метода addItemListener подключается экземпляр класса-адаптера. Вслед за этим кнопка переводится в состояние "отмечено" с помощью метода setSelected.

Заглянем внутрь метода itemStateChanged. Когда пользователь включил или выключил отмечаемую кнопку, производится обработка события, для чего сначала получается ссылка на только что переключенную пользователем кнопку:
JCheckBox cb = (JCheckBox) e.getItem();

Затем мы получаем ссылку на модель главной кнопки jbtn:
ButtonModel bm = jbtn.getModel();

Теперь необходимо выяснить, в какое состояние перешла отмечаемая кнопка:
if(e.getStateChange() == ItemEvent.SELECTED) state = true;

Дальше все просто. Нужно определить, какая из кнопок сгенерировала событие: методом getText() считывается текст с отмечаемой кнопки, затем вызываются нужные методы, изменяющие состояние главной кнопки. Следует особо отметить, как обрабатывается переключение кнопки Released. Если ее выключить, то главная кнопка jbtn должна перейти в нажатое состояние. Казалось бы, для программного нажатия достаточно вызвать метод setPressed класса JButton. Однако это не так.

N.B. Программное нажатие произойдет лишь в том случае, если заранее был вызван метод setArmed.

Запустите пример и потестируйте его, включая и отключая различные опции, задаваемые отмечаемыми кнопками.

Радиокнопки

Радиокнопки - их еще иногда называют кнопками с зависимой фиксацией - применяются исключительно в группах. В один момент времени включенной может быть только одна кнопка: как только пользователь включает другую кнопку, та кнопка, которая была включена до этого, выключается. Библиотека Swing для создания радиокнопок содержит конструкторы класса JRadioButton:

Параметры типа String задают надпись на кнопке, а параметры типа Icon определяют рисунок, который будет отображен вместо стандартного, рисуемого по умолчанию. Начальное состояние (включено/выключено) задается параметром конструктора, который имеет тип boolean. При значении true кнопка включается, а при false - выключается.

Методы класса JRadioButton практически совпадают с методами отмечаемых кнопок класса JCheckBox. Однако использовать радиокнопки несколько сложнее, поскольку они должны быть объединены в группы. А перед этим группа должна быть создана. Библиотека Swing содержит специальный класс ButtonGroup, от которого нам требуется всего три метода:

  • конструктор ButtonGroup();
  • add(AbstractButton) - метод добавления кнопки в группу;
  • remove(AbstractButton) - метод удаления кнопки из группы.

Создав экземпляр класса ButtonGroup, надо последовательно вызывать метод add для каждой из радиокнопок, сгруппировать их.

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

В качестве элемента пользовательского интерфейса, отвечающего за показ рисунков, используется класс JLabel. Вызывая метод setIcon этого класса, мы выводим заданное изображение в окно программы. Расположен метод setIcon непосредственно в обработчике события itemStateChanged, возникающего при переключении группы радиокнопок. Когда обработчик срабатывает, метод getItem класса ItemEvent получает ссылку на включенную кнопку, а уже по этой ссылке запрашивается присвоенный данной кнопке текст. Остается загрузить файл изображения в память и передать его экземпляру класса JLabel для отображения:

Кнопки JCheckBoxMenuItem и JRadioButtonMenuItem

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

Меню с отмечаемыми кнопками можно сделать, воспользовавшись классом JCheckBoxMenuItem, для которого определены следующие конструкторы:

Как и в случае с другими кнопками, описанными ранее, аргументы типа String задают надпись для пункта меню, Icon - отображаемый в меню рисунок, boolean - включение/выключение кнопки меню.

Меню с радиокнопками создается конструкторами на базе класса JCheckBoxMenuItem:

Назначение параметров конструкторов такое же, как и у всех кнопок библиотеки Swing.

Как реализовать меню с кнопками, видно из листинга 3. В данном примере сначала изготавливается полоса меню. Для этого оператором new нужно создать экземпляр класса JMenuBar:
private JMenuBar bar = new JMenuBar();

После этого на основе класса JMenu формируются раскрывающиеся меню:

Затем с помощью классов JCheckBoxMenuItem и JRadioButtonMenuItem создаются пункты выбора:

Затем в меню добавляются пункты выбора, а само меню добавляется в полосу меню программы:

При этом пункты меню с радиокнопками добавляются в кнопочную группу group точно так же, как обычные радиокнопки на основе класса JRadioButton.

И завершается инициализация программы вызовом специального метода, подключающего полосу меню к окну программы:

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

Таким образом средства библиотеки Swing позволяют внести элемент творчества в такую рутинную работу, как создание пользовательского интерфейса.

В первой версии языка Java для работы с графикой было только библиотека AWT. Эта библиотека – простой набор классов, таких, как Button(кнопка),TextField (текстовое поле), Label (текстовая метка или иконка) и другие.
Вскоре была создана более совершенная библиотека, которую назвали Swing. Она так же включает в себя кнопки,текстовые поля и другие элементы управления графическими приложениями. Названия компонентов этой библиотеке начинается с буквы J. Например JButton, JTextField и т.д.

Работать в Swing лучше, быстрей и удобней.

Вот некоторые основные объекты, из которых состоят Swing приложения:

Панель (panel) или, как ещё её называют, pane(оконное стекло) содержит все кнопки, текстовые поля, метки и другие компоненты.

Оконные элементы управления, такие как кнопки JButton,текстовые поля JTextfield,списки JList, и так далее.

Менеджер размещения (layout managers) компонент, которые помогают организовать все эти кнопки и поля на панели.

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

JFrame является главным окном для размещения компонентов и представляет их пользователю.

get/setLocation(int width,int height): Получить/установить месторасположение в окне, где фрейм должен появиться.

AWTUtilities.setWindowOpacity(JFrame frame, 0.5f); - Если добавить эту строку окно будет на половину прозрачным

Панель

Панель JPanel — это элемент управления, представляющий собой прямоугольное пространство, на котором можно размещать другие элементы. Элементы добавляются и удаляются методами, унаследованными от класса Container.

У каждой панели есть менеджер размещения, который определяет стратегию взаимного расположения элементов, добавляемых на панель. Его можно изменить методом setLayout(LayoutManager manager).

Оконные элементы управления

Класс JComponent

Все визуальные компоненты библиотеки Swing унаследованы от класса JComponent. Сам этот класс является абстрактными и непосредственно не используется, но все визуальные компоненты наследуют его методы.

Метка JLabel

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

JLabel(String text, Icon image, int align) — создает метку с надписью text и значком image. Третий параметр задает выравнивание текста вместе со значком. В качестве него может быть использована одна из констант, описанных в интерфейсе SwingConstants: LEFT, RIGHT, CENTER.

get/setIconTextGap(int gap) — позволяет получить или задать расстояние между текстом и значком метки в пикселах.

get/setVerticalAlignment(int align), get/setHorizontalAlignment(int align) — эти четыре метода позволяют получить текущее или установить новое выравнивание (по горизонтали и вертикали) метки относительно ее границ. Возможные положения описаны в интерфейсе SwingConstants.

get/setVerticalTextPosition(int align), get/setHorizontalTextPosition(int align) — эти четыре метода позволяют получить текущее или установить новое выравнивание текста относительно значка. Возможные положения описаны в интерфейсе SwingConstants.

Кнопка JButton

get/setRolloverIcon(Icon icon) - позволяет задать значок, который будет появляться при наведении на кнопку мыши.

get/setMargin(Insets margin) - позволяет задать величину отступов от текста надписи на кнопке до ее полей.

setFocusPainted(boolean focusPainted) - Включить/Выключить прорисовку фокуса (кнопка, на которой находится фокус, выделяется пунктирным прямоугольником).

Компоненты JToggleButton, JCheckBox, JRadioButton

Компонент JToggleButton представляет собой кнопку, которая может находиться в двух состояниях: нажатом и отпущенном.
Когда пользователь щелкает мышкой по такой кнопке, она изменяет свое состояние. Именно таким образом ведут себя кнопки форматирования на инструментальной панели текстового редактора. Кнопка [I] не только устанавливает или убирает курсивное начертание в выделенном тексте, но и сигнализирует о его наличии или отсутствии.

JToggleButton(String text, Icon icon, boolean selected) - Основной конструктор создает кнопку с заданными надписью, значком и текущим состоянием.

isSelected() возвращает true, если кнопка выбрана (т.е. находится в нажатом состоянии) и false в противном случает.

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

Аналогичным образом ведет себя класс JRadioButton — переключатель или радиокнопка, внешне выглядящая как пустой кружок, когда она не выделена и кружок с точкой в выделенном состоянии.

Для того, чтобы элементы объединить в группу, используется специальный контейнер ButtonGroup Если добавить в один такой контейнер несколько элементов JRadioButton, то выбранным всегда будет только один из них.

getElements() - возвращает все ее элементы в виде коллекции Enumeration. По коллекции можно пройтись итератором и найти выделенный элемент.

Текстовое поле JTextField

Для создания текстового поля чаще всего используются конструкторы:

JTextField(int columns) — создает пустое текстовое поле, ширина которого достаточна для размещения columns символов. При этом пользователь может вводить в текстовое поле строку какой угодно длины: она просто будет прокручиваться.

get/setCaretPosition() - Возвращает позицию курсора (каретки) в текстовом поле и позволяет задать ее программно.

setHorizontalAlignment(int align) -Выравнивание текстового поля в качестве параметра передается одна из констант выравнивания, определенных в этом же классе JTextField: LEFT, CENTER, RIGHT.

Поле для ввода пароля JPasswordField

JPasswordField является прямым потомком JTextField, поэтому для него справедливо все сказанное выше. JPasswordField является прямым потомком JTextField, поэтому для него справедливо все сказанное выше.

Область для ввода текста JTextArea

JTextArea также является потомком JTextField и наследует все его методы.

Панель прокрутки JScrollPane

setHorizontalScrollBarPolicy(int policy) — позволяет задать стратегию работы с горизонтальной полосой прокрутки. Возможные значения представлены константами HORIZONTAL_SCROLLBAR_ALWAYS (отображать всегда), HORIZONTAL_SCROLLBAR_AS_NEEDED (отображать при необходимости) и HORIZONTAL_SCROLLBAR_NEVER (не отображать никогда). Данные константы определены в интерфейсе ScrollPaneConstants.

setVerticalScrollBarPolicy(int policy) позволяет задать стратегию работы с вертикальной полосой прокрутки посредством констант VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED и VERTICAL_SCROLLBAR_NEVER

Инструментальная панель JToolBar

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

JToolBar(String title, int orientation) Для создания вертикальной панели где параметр orientation задается константой VERTICAL из интерфейса SwingConstants.

is/setFloatable(boolean floatable) — разрешает либо запрещает (по умолчанию разрешает) пользователю откреплять панель от места ее начального расположения.

Выпадающий список JComboBox

Выпадающий список — весьма распространенный элемент управления. Он содержит множество вариантов, из которых пользователь может выбрать один и только один, либо (если выпадающий список это позволяет) ввести свой собственный.

insertItemAt(Object item, int index) - Позволяющим уточнить позицию, в которую требуется вставить элемент.

setEditable(boolean editable) Чтобы пользователь мог ввести свой вариант, который не присутствует в списке, должен быть вызван метод с параметром true.

Ползунок JSlider

Ползунок позволяет пользователю выбрать некоторое число из диапазона доступных значений, наглядно представив этот диапазон.

JSlider(int orientation, int min, int max, int value) Конструктор первый параметр ориентация ползунка (HORIZONTAL или VERTICAL).

setMajorTickSpacing(int spacing) - Позволяет задать расстояние, через которое будут выводиться большие деления.

Панель со вкладками JTabbedPane

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

Список JList

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

Создать список можно с помощью конструктора, работающего на основе массива Object[] или вектора Vector (аналогично JComboBox).

setSelectionMode(int mode) указывает на ListSelectionModel:SINGLE_SELECTION — может быть выделен только один элемент, SINGLE_INTERVAL_SELECTION — может быть выделено несколько элементов, но составляющих непрерывный интервал,MULTIPLE_INTERVAL_SELECTION — может быть выделено произвольное количество смежных и несмежных элементов.

set/getSelectedIndex() и set/getSelectedIndices() - возвращают они не сами выделенные элементы, а их индексы.

JTable Таблицы

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

JFileChooser для выбора файла


При работе с файлами из приложения возникает необходимость рано или поздно использовать диалог для выбора файлов.

JProgressBar полоса загрузки

JMenuBar


Стандартные диалоговые окна

Менеджер размещения

В некоторых старомодных языках программирования необходимо было указывать координаты и размеры каждого компонента окна. Это работало хорошо, если было известно разрешающая способность экрана каждого пользователя. В Java есть схемы размещения (Layout Managers) , которые позволяют разместить компоненты на экране, не зная точных позиций компонентов. Схемы гарантируют, что та часть интерфейса, за которую они отвечают, будет выглядеть правильно в не зависимости от размеров окна и разрешения экрана.

Менеджер последовательного размещения FlowLayout

Менеджер граничного размещения BorderLayout

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

Менеджер табличного размещения GridLayout

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

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

Менеджер блочного размещения BoxLayout и класс Box

Менеджер BoxLayout размещает элементы на панели в строку или в столбец. Обычно для работы с этим менеджером используют вспомогательный класс Box, представляющий собой панель, для которой уже настроено блочное размещение. Создается такая панель не конструктором, а одним из двух статических методов, определенных в классе Box: createHorizontalBox() и createVerticalBox().

Горизонтальная распорка создается статическим методом createHorizontalStrut(int width), а вертикальная — методом createVerticalStrut(int height). Оба метода определены в классе Box, а целочисленный параметр в каждом из них определяет размер распорки.

Ручное размещение элементов

Если в качестве менеджера размещения панели установить null, элементы не будут расставляться автоматически. Координаты каждого элемента необходимо в этом случае указать явно, при этом они никак не зависят от размеров панели и от координат других элементов. По умолчанию координаты равны нулю (т.е. элемент расположен в левом верхнем углу панели). Размер элемента также необходимо задавать явно (в противном случае его ширина и высота будут равны нулю и элемент отображаться не будет). Координаты элемента можно задать одним из следующих методов:

Инструменты страницы

За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: GNU Free Documentation License 1.3


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

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

Определение

Swing – простой инструмент Джавы, оснащенный графическим интерфейсом. Обладает огромным количество виджетов для того, чтобы создавать разнообразное программное обеспечение. Является частью JFC. Основывается на AWT API.

Swing – библиотека, предназначенная для формирования графического интерфейса на Джаве. Схож с AWT по предназначению, но обладает рядом отличительных преимуществ.

AWT или Swing: ключевые отличия

Реализация поставленной задачи зависит от того, насколько хорошо разработчик понимает, что такое AWT и Swing. Таблица ниже поможет разобраться в разнице между соответствующими инструментами.

AWTSwing
Чувствительна к платформе, на которой запускаетсяПлатформо-независимый вариант
Отсутствует соответствие MVCИмеет место соответствие MVC
Использует относительно небольшой пакет компонентовПозволяет использовать мощный функционал для создания new list и интерфейсов
Нет поддержки подключаемого внешнего вида и ощущенияВнешний вид может быть подключен
ТяжелаяЛегкая

Из всего вышесказанного следует, что знать основы Swing при работе с Java – это значит облегчить себе процесс коддинга. Такой вариант идеально подходит для сложных и тяжеловесных проектов.

О контейнерных классах

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

Они бывают верхнего и нижнего уровней. К первой категории относят:

  • JApplet – главное окно апплета;
  • JFrame – окошко того или иного приложения;
  • JColorChooser – выбор цветовой гаммы;
  • JFileChooser – определение спектра директорий и файлов;
  • FileDialog – аналогично предыдущему варианту, но является компонентом AWT.

Нижний уровень называется простым. Сюда относят:

В контейнерном классе и интерфейсах можно использовать разнообразные элементы в виде контейнеров.

Основные интерфейсные составляющие

Сюда можно отнести:

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

Сегодня, изучив основы Свинг, будет предложено создать выпадающий список в Java приложении. Это не так трудно, как может показаться изначально. Особенно если хорошенько изучить рассматриваемый инструментарий.

События

При работе с графическим интерфейсом происходит создание new событий. Вот и примеры:

  • ActionEvent – определяется тем или иным компонентом;
  • KeyEvent – ввод с клавиатуры;
  • ItemEvent – выбор или отмена оного;
  • MouseEvent – события, связанные с мышкой;
  • WindowEvent – события окошка ПО (активация, свертывание, корректировка).

Для того, чтобы обрабатывать события элементов, требуется зарегистрировать объект-обработчик в качестве слушателя. Тут на помощь приходит метод addYYYListener. Непосредственная обработка осуществляется через интерфейс, который соответствует выбранному объекту.

Стандартные компоновщики

При коддинге списка или интерфейса через Swing нужно помнить, что тут есть автоматическое позиционирование, а также задание габаритов дочерних элементов. Делается все это в случае с контейнерами через компоновщики.

Вот стандартные элементы подобного вида:

  • BorderLayout – размещение элементов в один из 5 регионов, как при добавлении в контейнер;
  • FlowLayout – элементы по порядку, соответствуя ориентации контейнера (изначально — слева на право);
  • GridLayout – табличное размещение;
  • BoxLayout – отображение по вертикали/горизонтали;
  • SpringLayout – низкоуровневый менеджер для утилит построителей форм;

Есть еще и GroupLayout. Тоже создавался для построителей форм. На практике используется не слишком часто, хоть и относится к стандартным.

Кнопки

Работая в Джаве с interface, стоит знать не только о том, как создавать new списки, но и применять кнопки. Ниже можно увидеть пример элементарного соответствующего элемента управления:


Основная работа с new button – это преимущественно размещение в контейнере, а также задействованием обработчика событий.

Если говорить об интерфейсе, то кнопки JButton легко корректируются. Менеджер изменяться не будет. Вот пример того, как будет выглядеть код в Свинг для упомянутого элемента управления различных форм:


Настройки, свойства, события

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


А вот события, которые возникают при работе с рассматриваемым элементом управления:


А вот свойства, которые помогают изменять представление иконок:


Списки – что знать

Списки — элементы, применяемые на практике достаточно часто. В интерфейсе без них трудно представить сложную программу. Особенно это касается ПО, где можно что-либо выбирать или добавлять new позиции.

Они в Джаве бывают двух типов:

  • JLists – обычные;
  • JComboBox – выпадающий.

У списка (обычного new) два поставщика информации. Первый отвечает за реализацию интерфейса ListModel. В ней находятся элементы списка. Второй это работа с interface ListSelectionModel. Он отвечает за составляющими, которые выделены. Изначально включена поддержка самых важных способов выделения через DefaultListSelectionModel.



Вот пример использования обычного new списка и моделей Default. Это – самый простой вариант развития событий.

Модели списков

Имея дело со Swing, разрабу предстоит выучить много new информации. Лучше всего создавать списки и другие графические элементы через модели данных. Они дают разграничивать обработку информации от ее представления на дисплее.

AbstractListModel

Первое, о чем необходимо помнить, желая создать new список. У ListModel всего 4 метода:

  • присоединения и удаления слушателей – 2 штуки;
  • возврата элемента, находящегося в той или иной позиции списка;
  • уточнения количества составляющих модели.

Чтобы работать со списками, Свинг обладает стандартной моделью информации DefaultListModel. Она позволяет хранить и корректировать данные предельно комфортно. Иногда требуется создавать собственные new модели данных. Пример – там, где информация располагается в нестандартной структуре.

DatabaseListModel – необходим для абстрактного класса моделей списков. Содержит информацию в динамическом массиве ArrayList.

Выделение

JList – это new список (или уже созданный список), у которого есть модель выделения. Называется DefaultListSelectionModel. Обладает несколькими режимами выделения составляющих списка. Вот режимы оных:

РежимЗа что отвечает
SINGLE_SELECTIONВыделяет один компонент списка
SINGLE_INTERVAL_SELECTIONНесколько смежных составляющих списка
MULTIPLE_INTERVAL_SELECTIONНесколько позиций списка произвольно

А вот самые распространенные методы модели выделения jlist-компонентов:

  • setSelectedIndex (int idx) – один элемент в списке;
  • setSelectionInterval (int anchor, int lead) – несколько смежных компонентов;
  • addSelectionInterval (int anchor, int lead) – прибавление в имеющемуся выделению еще одну позицию;
  • setSelectedIndices (int[] rows) – несколько выделенных произвольно составляющих.


А вот наглядный пример реализации. Разобраться в нем, благодаря комментариям и предложенной информации, не так уж трудно.

Методы получения информации о выделенных компонентах

Это – стандартные возможности, предусматриваемые DefaultListSelectionModel. Их достаточно для большинства new приложений и списков. Собственная модель может быть создана при помощи такого шаблона:


Тут предопределены два метода: добавление нового элемента выделения в списке к имеющемуся, а также определение интервала выделения.

Настройка вида

Пример jlist в Java был представлен ранее. После того, как список будет создан, его можно откорректировать. Вот свойства и методы определения интерфейса списков:

СвойстваХарактеристика
background, foreground, fontФон и цвет символов, шрифт
selectedBackgroundЗаливка выделенных составляющих
selectedForegroundЦветовая гамма символов выделенных компонентов

Данные свойства в списке (new или уже созданном ранее) помогут произвести стилистическую настройку.

Слушатель событий

Списки jlist включают в себя стандартные события от клавиатуры и мыши. Относятся к базовому компоненту JComponent. Дополнительные события осуществляются непосредственно в моделях оного.

Здесь по умолчанию нет двойных щелчков мышкой. Средства по их определению тоже отсутствуют. Но при желании можно добавить их посредством слушателя обработки событий клавиш мышки.

Выпадающий список – пример и особенности

Особенности такого объекта:

  • поддержка выбора одного компонента из представленных;
  • редактирование текущего элемента;
  • ввод собственных значений;
  • возможность поиска посредством клавиатуры.

Вот пример раскрывающегося перечня:



Результат будет таким:


С основами Swing покончено. А для того, чтобы лучше изучить данную область и такие фразы как new jpanel, int I, public static void, args, string, static void main, array и другие понятия программирования не вызывали никаких вопросов, стоит обратить внимание на специализированные курсы.

Они позволяют получить:

  • новые выгодные и интересные знакомства;
  • опыт работы с Джавой и его инструментами;
  • сертификат по завершению обучения.

Проводятся в очной и дистанционной формах. Могут запускаться в любое время, что делает такие курсы предельно удобными. new actionlistener и другие термины программирования не доставит никаких хлопот.

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

Читайте также: