Java — Java размер JFrame


JWindow, JFrame, JDialog

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

Все окна библиотеки Swing — а к ним относятся окно без рамки JWindow, окно с рамкой JFrame и диалоговое окно JDialog — являются исключением из правила, согласно которому все компоненты Swing представляют собой легковесные компоненты и унаследованы от базового класса JComponent. Окна Swing являются тяжеловесными контейнерами для размещения в них легковесных компонентов, которые операционная система не видит.

Наиболее полезные JFrame методы

Методы Описание
setLocation() Эта группа методов позволяет задать позицию и размеры окна на экране. setLocation() задает позицию окна, setSize() позволяет указать его размеры, а с помощью setBounds() можно сразу задать прямоугольник, который займет ваше окно на экране
setSize()
setBounds()
раск() Позволяет «упаковать» имеющиеся в окне компоненты, так чтобы они занимали столько места, сколько им необходимо. Компоненты при вызове этого метода переходят в «видимое» состояние, хотя и не появляются на экране до вызова одного из следующих методов
show() Отображение окна на экране. После вызова этих методов компоненты переходят в «видимое» состояние и начинают обслуживаться очередью событий. Метод show() к тому же проводит валидацию содержащихся в окне компонентов
setVisible()
dispose() Убирает окно с экрана (если оно в момент вызова метода видимо) и освобождает все принадлежащие ему ресурсы.

Окно JWindow

«Родителем» всех окон Swing является окно без рамки и без элементов управления JWindow.

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

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

Рассмотрим пример JWindowTest. Основная идея использования окна без рамки JWindow заключается в копировании части «изображения рабочего стола» в окно приложения. Благодаря появившемуся в пакете JDK 1.3 классу Robot можно «снимать» экранную копию рабочего стола.

Пример JWindow

В этом примере приложение наследуем от окна JWindow, чтобы удобнее вызывать методы этого класса и добавлять в окно компоненты. Объект Robot необходимо создавать в блоке try . catch, т.к. его создание может быть запрещено менеджером безопасности, используемым виртуальной машиной Java. Впрочем, нам нарушение безопасности не грозит, потому что мы создаем отдельное приложение, а не апплет.

Вырезаем часть изображения «рабочего стола» методом createScreenCapture() в стороне он местоположения нашего окна. Затем в панель содержимого окна добавляется компонент ImageDraw, который и отображает вырезанное изображения рабочего стола. После вывода окна на экран программа засыпает на 10 секунд, а потом заканчивает свою работу.

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

Прежде чем производить настройку окна, в примере JWindowTest вызывается конструктор базового класса ключевым словом super() без параметров. На самом деле окна без рамки JWindow обязательно требуют при создании указывать своего «родителя» — окно с рамкой JFrame,что не всегда может быть неудобно. Специально для таких случаев в класс JWindow был добавлен конструктор без параметров, который создает вспомогательное невидимое окно JFrame и использует его как «родителя». После этого все окна без рамки, созданные таким образом, задействуют только это окно и экономят ресурсы.

Следует также отметить, что с помощью конструктора без параметров создается окно JWindow, неспособное получать фокус ввода. Чаще всего именно такое поведение необходимо (ведь панелям инструментов, всплывающим заставкам и меню фокус ввода не нужен). При необходимости получения фокуса ввода, используйте метод setFocusableWindowState(true).

Окно JFrame

Окно JFrame наследует свойства класса JWindow и представляет собой наиболее часто используемое в приложениях окно «общего назначения». Основные отличия окна JFrame от JWindow :

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

Для размещения компонентов пользовательского интерфейса в подавляющем большинстве приложений применяется класс JFrame. Разработчики Swing определили специальный метод закрытия окна setDefaultCloseOperation, существенно упрощающий эту операцию. Рассмотрим простой JFrame пример (JFrameWindowListener) с обработкой события закрытия окна.

JFrame пример

В примере создается окно JFrame с определением заголовка в конструкторе базового класса. Для определения титульной строки окна можно также использовать метод setTitle() класса JFrame.

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

В примере методу setDefaultCloseOperation передается константа DO_NOTHING_ON_CLOSE — ничего не делать при закрытии окна. К окну JFrame подключается слушатель и обработка события закрытия окна выполняется в методе windowClosing. Алгоритм обработки построен таким образом, что окно закрывается при третьей попытке. Номер попытки отображается в метке интерфейса.

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

Для определения иконки окна необходимо использовать метод setIconImage(). Иконка располагается на кнопке свернутого окна или в заголовке окна в нормальном состоянии.

Из дополнительных возможностей окна с рамкой JFrame следует упомянуть о его способности «прятать» свои «украшения»: рамку и элементы управления окном. Делает это метод JWindow.

События окон, WindowListener, WindowFocusListener


Окна Swing (JWindow, JFrame, JDialog) поддерживают два типа событий :

  • WindowListener — позволяет узнать об изменениях в состоянии окна;
  • WindowFocusListener — сообщает о получении или потере компонентами окна фокуса ввода
Цукерберг рекомендует:  Джентльменский набор разработчика

Полный список методов данных слушателей можно найти в интерактивной документации Java.

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

К фрейму JFrame можно подключить слушателя окна, созданного на основе WindowAdapter (чтобы не реализовывать все определенные в интерфейсе WindowListener методы) и переопределить метод windowClosing, как это представлено в следующих строках кода :

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

Диалоговое окно JDialog

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

В Swing диалоговые окна реализуются классом JDialog, унаследованном от базового класса окон JWindow и позволяющим создавать как обычные, так и модальные диалоговые окна. JDialog поддерживает как и JFrame закрытие окна, а в остальном сходен с другими окнами Swing.

При создании диалоговых окон Swing необходимо указать «родительское окно», которым может быть окно с рамкой JFrame или другое диалоговое окно JDialog. Имеется также конструктор, не требующий «родительского» окна, но использующий вспомогательное прозрачное окно, о котором было сказано на странице «Окно без рамки JWindow».

JDialog пример создания диалоговых окон

В примере создаем окно с рамкой JFrame, в панели содержимого которого размещается две кнопки JButton. По нажатию на кнопки создаются диалоговые окна в отдельном методе createDialog(). Диалоговое окно с заданным заголовком JDialog может быть модальным и немодальным. Программа позволяет создать несколько немодальных окон одновременно, но только одно модальное. Немодальные окна не блокируют работу с основным окном приложения. При закрытии диалогового окна используется константа DISPOSE_ON_CLOSE, удаляющую окно после закрытия.

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

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

Оформление окон

Начиная с JDK 1.4 появилась возможность настраивать так называемое визуальное «оформление» окон: рамка, элементы управления окном (кнопки закрытия или свертывания), системное меню. Необходимость этого ощущалась с самых первых выпусков Swing.

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

В классах JFrame и JDialog имеется статический метод setDefaultLookAndFeelDecorated(), обеспечивающий возможность оформления всех создаваемых окон.

Пример оформления окон : JDialog decoration

В примере создается простое окно с рамкой и диалоговое окно. Перед создания окон вызывается метод setDefaultLookAndFeelDecorated(), означающий, что для создаваемых окон JFrame и JDialog потребуется специальное оформление. Далее определяются размеры окон и они выводятся на экран.

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

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

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

Скачать примеры

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

Фреймы и графика для Java

В Java окно верхнего уровня (не содержащееся в другом окне) называется фреймом. В отличие от апплетов графические приложения, расширяющие класс java.awt.Frame или его подкласс jawax.swing.JFrame, не нуждаются в браузере. Для создания графического интерфейса приложения необходимо предоставить ему в качестве окна для вывода объект Frame или JFrame, в который будут помещаться используемые приложением компоненты GUI (Graphics User Interface). Большинство своих методов класс Frame наследует по иерархии от классов Component, Container и Window. Класс JFrame из библиотеки Swing является подклассом класса Frame.

Такое приложение запускается с помощью метода main() и само отвечает за свое отображение в окне Frame или JFrame.


/* пример # 9 :простейший фрейм – овалы и дуги : FrameDemo.java */

public class FrameDemo extends JFrame <

private String msg = «My Windows-Application»;

public void paint(Graphics g) <

g.drawString(msg, 59, diam + 52);

g.drawLine(59, diam + 56, 190, diam + 56);

public void drawSphere(Graphics g, int diam) <

int height = (int) (r * Math.sin(Math.PI / 180 * alpha));

g.drawArc(10 + r – width, r + height + i * 10,

2 * width, 80 – i * 20, 0, 180);

g.drawArc(10 + r – width, r – height + i * 10,

2 * width, 80 – i * 20, 0, 180);

g.drawArc(10 + r – width, r + height + i * 10,

2 * width, 80 – i * 20, 0, -180);

g.drawArc(10 + r – width, r – height + i * 10,

2 * width, 80 – i * 20, 0, -180);

for (int i = 0; i of your page

Похожие посты:

  • Язык Java (0)
  • Нововведения java версий 5.0 и 6.0 (0)
  • Простое приложение Java (0)
  • Классы и объекты Java (0)
  • Сравнение объектов Java (0)
  • Консоль (0)
  • Простой апплет (0)

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.


2 коммент. »

У меня эта програмка не сработала – выдала массу ошибок

У меня тоже не работало.
Чтобы заработало, я заменил в исходнике знаки тире на минусы. Заработало. Хоть и не идеально.

Пакет функций Java(), размер JFrame

У меня возникли некоторые проблемы с функцией pack(), так как я знаю, что размер JFrame должен быть минимальным.

И я прошу прощения за плохой язык.

2 ответа

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

Нет, pack размеры кадра в соответствии с его предпочтительным размером (в зависимости от требований менеджеров по расположению), но так как ваш Plosca не имеет предпочтительного размера, возвращается 0x0 , поэтому ваш кадр думает, что предпочтительный размер 0x0

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

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

Одна большая проблема заключается в том, что вы добавляете компоненты к своему Plosca экземпляр во время каждого звонка paintComponent . Вы должны добавить свои компоненты в Plosca конструктор вместо. Затем, когда вы звоните pack() у него будут компоненты, поэтому его предпочтительный размер не будет таким маленьким.

Цукерберг рекомендует:  4 ошибки, которые могут сорвать запуск сайта

Использование JFrame для создания окна приложения

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

import javax.swing.JFrame;
import javax.swing.JLabel;

public class TestFrame <

public static void createGUI() <
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame(«Test frame»);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label = new JLabel(«Test label»);
frame.getContentPane().add(label);

frame.setPreferredSize(new Dimension(200, 100));

public static void main(String[] args) <
javax.swing.SwingUtilities.invokeLater(new Runnable() <
public void run() <
createGUI();
>
>);
>
>

Это самое простое Swing приложение. Данный код создаст приложение, внешний вид которого представлен на рисунке. Рассмотрим код более детально. Каждое приложение должно содержать статический метод main – точка входа приложения, именно с него начинается выполнение.

Далее выполняется создание графического интерфейса пользователя. Создание графического интерфейса пользователя непременно должно происходить в Event dispatch потоке. Для этого метод вызывается внутри определенного вида конструкции SwingUtilities. Перейдем к непосредственному созданию и размещению компонентов.

Самой первой строкой метода createGUI мы говорим системе, чтобы окно полностью рисовалось Swing. Если закомментировать этот код, то окно будет определяться самой операционной системой – Swing доверит рисовать окно ей. Далее создаем само окно и указываем текст, который будет располагаться в его заголовке. С помощью метода setDefaultCloseOperation мы говорим системе, как отреагировать на закрытие окна. Сейчас нам необходимо, чтобы при закрытии окна закрывалось и приложение. Для этого мы передаем параметр JFrame.EXIT_ON_CLOSE. Но когда-нибудь необходимо будет не закрывать приложение, а закрыть только окно и оставить выполняться его в фоновом режиме, тогда мы будем передавать этому методу другой параметр.

Далее создаем текстовый лейбл с помощью JLabel, указывая при этом какой текст мы хотим в нем видеть, и размещаем на форме. При размещении компонента в окне тоже есть одна хитрость. У объекта JFrame есть специальная панель content pane, на которой должны размещаться все остальные дочерние компоненты. С помощью вызова getContentPane мы получаем эту панель и добавляем лейбл уже на нее. Далее устанавливаем размер окна и показываем его пользователю.

Иногда история создания интернета интересна к прочтению. Можно много узнать о том, как создавали интернет.

Java: Получить Размер JFrame Содержание

Как получить фактический размер содержимого JFrame frame = new JFrame() ?

Я пытаюсь , frame.getContentPane().getSize() но по какой — то причине он продолжает возвращаться 0.

КОД:


Вы можете получить только размер после того , как JFrame было вынесено, так как в противном случае текущий размер составляет [0, 0]. Так что ваш вызов getSize() только после setVisible(true) .

Просто любопытно — зачем вам нужна информация?

Редактирование 1
Per код:

Редактирование 2
Вы заявляете в комментарии:

Мне нужно установить панель как половину ширины панели содержимого. благодаря

Эта информация должна быть в вашем первоначально вопросе , так как это гораздо важнее , чем вы пытаетесь получить размер. На самом деле ваш вопрос является отличным примером проблемы XY

Решение не получить размер, но использовать менеджер компоновки , который будет делать эту работу за вас, здесь GridLayout(1, 2) может быть ваш билет.

Пишем 2d-игру на Java

Доброго времени суток всем!

В этой статье будет описываться создание 2D игры на Java. Сразу предупреждаю, вы должны хотя бы базово знать язык Java, поскольку на подробное объяснение каждой строки у меня нету времени. И очень прошу вас, не списывать просто код, а пытаться понять что означает каждая строка, и писать со смыслом. И еще, я использую Eclipse, но вы можете использовать любой IDE.

Задача:

Я планирую создать игру, напоминающую шутер с видом от 3 лица.

Начало:

Ну что, приступим!

Для начала создадим проект. Назовем его «Just game». И сразу создаем класс Display.java. В него пишем:

Теперь разберемся, что мы сделали.

мы создаем рамку, которая и будет отображаться при запуске нашей игры

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

устанавливаем нашей рамке максимальные размеры, убираем декорации(кнопки свернуть, закрыть, уменьшить/увеличить и т.п.), т.е. делаем игру на весь экран. Если вы хотите, чтобы игра не была бы на весь экран, то используйте:

— делаем рамку видимой

Только не забудьте, все настройки рамки надо писать до того, как вы сделаете её видимой

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

Серое окно… Как скучно… Давайте создадим что-нибудь поинтереснее.

Создадим новый класс, под названием «Main». Main класс у нас будет являться панелью, которую мы вставим в рамку, по этому он должен расширять JPanel. (Для тех, кто не знает, расширять пишется как extends после названия класса)

Возвращаемся в класс Display и после настроек рамки, но перед установлением её видимости, пишем:

Вы спросите — «Ну и зачем мы это сделали?». Представьте себе картину. Эта картина и является конечная наша игра. А теперь представьте рамку. Без ничего внутри, просто пустую рамку. На ней ничего нельзя нарисовать, она бесполезна. Для этого, мы вставили в картину пустой лист, на котором программа в дальнейшем может рисовать картину. На этом закончим наше лирическое отступление и вернемся к классу Main.

Нам нужно осуществить отрисовку, по этому мы должны добавить метод paint. Для этого пишем:

Ну и для начала, можем написать внутри этого метода отрисовку линии. Для этого пишем:


Теперь запускаем программу, и видим:

Даааааа, не густо…

Давайте отрисуем какую-нибудь картинку. Например эту:

Для начала, нам нужно указать путь к картинке. Для этого не в методе paint, пишем:

(предварительно надо в наш проект скинуть картинку и назвать ее 2.png)

После этого удаляем строчку отрисовки линии, а вместо нее в метод paint пишем:

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

drawImage(картинка которую мы будем рисовать, которую мы объявили раннее, координата X с которой будет рисоваться картинка, координата Y с которой будет рисоваться картинка, paint);

Отдельно хочу поговорить о параметре paint. Лучше всего оставляйте его null. Я только однажды сталкивался, когда мне нужно было использовать paint. Это было когда я отрисовывал текст, и задавал ему размер шрифта. Но советую не лезть туда и использовать null.

Теперь запускаем программу, и видим:

Чего-то она маленькая, не правда ли? Давайте научимся увеличивать её размеры. Добавляем к drawImage() параметры так, чтобы вышло:

Что мы сейчас добавили? Эти два параметра растягивают картинку, до координат 1920 и 1080. Получается, что картинка на весь экран. Давайте запустим программу и это проверим.

Цукерберг рекомендует:  5 причин для гика прийти на ММСО

Ну наконец-то. Теперь мы умеем любые картинки растягивать на весь экран. Но вот проблема. Метод paint вызывается только один раз. И как же его обновлять постоянно? Для этого существует очень полезная вещь — таймер. Давайте создадим его.

Для этого пишем:

(20 это частота с которой обновляется таймер, this- где выполнять метод при обновлении таймера
Это мы должны вписать сразу после строки определения класса, т.е. после:

Также, надо дополнить строку определения класса таким образом:

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

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

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

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

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

И перед конструктором добавим:

И сходим еще в класс Display.java и там немного изменяем метод frame.add:

Таким образом, наша рамка будет передаваться в класс Main.java. Переходим в этот класс, и там где у нас метод paint() меняем строку drawImage() на:

Таким образом, теперь наша игра будет отрисовывать картинку на весь экран, в независимости от его разрешения. Запускаем:

На сегодня все. Оставляю код, для тех, кто запутался:

Java — Java размер JFrame

10 просмотра

1 ответ


9 Репутация автора

В настоящее время я пытаюсь использовать paintComponent, чтобы нарисовать квадрат в середине моего JFrame поверх JPanel. Размер моего фрейма составляет 600×600, но когда я пытаюсь нарисовать квадрат с Xcoordinate = 300 и Ycoordinate = 300, квадрат на самом деле даже не близко к середине моего кадра. Я делаю что-то неправильно? Это для школьного проекта, поэтому любые советы также будут оценены. Заранее спасибо!

Мой класс фреймов:

Мой класс панели:

Мой квадратный класс:

Ответы (1)

плюса

276356 Репутация автора

Напишите полную рабочую программу, которая рисует квадрат в середине кадра.

Ну, я думаю, что это ужасное требование. Рамка содержит строку заголовка и 4 рамки. Поскольку рамка сжимается в размере, вы не сможете нарисовать квадрат в строке заголовка.

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

Площадь общественного класса расширяет прямоугольник <

Почему вы расширяете Rectangle?

Если вам нужна информация x, y, width, height, тогда вы просто используете getBounds() метод Rectangle класса для получения информации.

Тем не менее, почему вы даже используете класс Rectangle?

Если вы хотите центрировать объект, то значение x / y не имеет значения, потому что вам нужно динамически вычислять значения x / y при изменении размера панели.

То, что вам нужно знать, это ширина / высота объекта, который вы хотите нарисовать, так что на самом деле вы должны создавать Dimension объект. Что-то вроде:

Затем, чтобы центрировать объект на панели, вам нужно знать ширину панели и ширину объекта, чтобы вычислить место для рисования:

Java — Java размер JFrame

В данной статье рассмотрим использование фрейма из библиотеки swing. Для простоты понимания я буду писать код и сразу комментарии.

import javax.swing.*;

// подключаем библиотеку для работы с графикой (платформенно- независимую)

// подключаем библиотеку для работы с графикой (платформенно- зависимую).
// Из нее мы будем использовать только интерфейс Image.

public class Main <

public static void main(String[] args) <

JFrame frame = new JFrame();//cоздаем объект фрейм. В данный момент он не видим,
//находиться в точке (0,0),и имеет размеры (0,0).

frame.setSize(100, 100);// задаем размер

frame.setUndecorated(false);//отображать или не отображать кнопки изменения размеров и
//т.д. Может быть вызван только перед тем как объект будет отображен первый раз.

frame.setVisible(true);// делаем видимым


frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//говорим, чтоб программа завершила
//работу при закрытии фрейма.

frame.setResizable(false);// говорим что пользователь не имеет права изменять размеры
//фрейма

frame.setLocation(100, 100);// имзменяем местоположение фрейма.

Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize();// получим размер экрана

frame.setSize(screenSize);// установим его

Image img=Toolkit.getDefaultToolkit().getImage(«C://1.jpg»);// загрузим изображение

frame.setIconImage(img); // установим его как пиктограмму.

frame.setExtendedState(Frame.MAXIMIZED_BOTH);// установим максимальный размер окна

frame.setTitle(«Мой первый фрейм»);// без комментариев

>

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

Java — Java размер JFrame

10 просмотра

1 ответ

9 Репутация автора

В настоящее время я пытаюсь использовать paintComponent, чтобы нарисовать квадрат в середине моего JFrame поверх JPanel. Размер моего фрейма составляет 600×600, но когда я пытаюсь нарисовать квадрат с Xcoordinate = 300 и Ycoordinate = 300, квадрат на самом деле даже не близко к середине моего кадра. Я делаю что-то неправильно? Это для школьного проекта, поэтому любые советы также будут оценены. Заранее спасибо!

Мой класс фреймов:

Мой класс панели:

Мой квадратный класс:

Ответы (1)

плюса

276356 Репутация автора

Напишите полную рабочую программу, которая рисует квадрат в середине кадра.

Ну, я думаю, что это ужасное требование. Рамка содержит строку заголовка и 4 рамки. Поскольку рамка сжимается в размере, вы не сможете нарисовать квадрат в строке заголовка.

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

Площадь общественного класса расширяет прямоугольник <

Почему вы расширяете Rectangle?

Если вам нужна информация x, y, width, height, тогда вы просто используете getBounds() метод Rectangle класса для получения информации.

Тем не менее, почему вы даже используете класс Rectangle?

Если вы хотите центрировать объект, то значение x / y не имеет значения, потому что вам нужно динамически вычислять значения x / y при изменении размера панели.

То, что вам нужно знать, это ширина / высота объекта, который вы хотите нарисовать, так что на самом деле вы должны создавать Dimension объект. Что-то вроде:

Затем, чтобы центрировать объект на панели, вам нужно знать ширину панели и ширину объекта, чтобы вычислить место для рисования:

Hello world, jFrame и Java

Для создания воспользуемся средой Eclipse.
Естественно для работы вам необходимы расширения eclipse для Java ( eclipse-jdt или как его обозвали в вашей системе ) .
Сейчас мы создадим вот такое окошко:

У меня Gnome 3. Не пугайтесь окна будут выглядит согласно вашей теме.

Создайте новый Java проект в Eclipse. Подробнее об этом тут.
Создаём новый класс. Я назвал его TestFrame.
Когда всё готово, подымитесь выше в коде и внесите такие строки:

Теперь перейдите внутрь класса и создайте метод createGUI() :

Теперь необходимо создать «функцию», которая выполнит этот метод. Это будет метод main:

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих