Я пытаюсь добавить 2 разные панели в рамке. одна панель добавляет несколько кнопок в рамке. другой кадр добавит шахматную доску в кадр. я запутался, как нарисовать эту доску на панели. моя рамка будет иметь доску сверху и кнопки внизу. Кроме того, дайте мне знать, если я что-то не так в данном коде, кто-нибудь может мне помочь? мой код
4 Ryan [2010-07-02 00:53:00]
Я пишу графический пользовательский интерфейс для построения данных по оси xy. Он написан на Java Swing, поэтому у меня есть JFrame , который содержит весь графический интерфейс. Одним из компонентов GUI является JPanel , который составляет область, где данные отображаются. Я использую Graphics2D для рисования.
Я пытаюсь сделать расширение командной строки этой программы. Идея состоит в том, что пользователь может указать данные, которые они хотят построить в файле конфигурации. Это позволяет проводить интересные сметы параметров, которые экономят много времени.
Проблема возникает, когда я пытаюсь получить объект Graphics для рисования с помощью. Я создаю JPanel , который выполняет чертеж, но объект Graphics имеет значение null, когда я вызываю paintComponent() .
Кроме того, когда вы запускаете программу (из командной строки снова), она крадет фокус из всего, что вы пытаетесь сделать (если эта программа работает в фоновом режиме). Есть ли все равно, чтобы обойти это? Вам нужно создать JPanel для рисования?
Я работаю над проектом, в котором я пытаюсь сделать программу рисования. До сих пор я использовал Netbeans для создания графического интерфейса и настройки программы.
Как сейчас, я могу назвать все согласованные, необходимые для рисования внутри него, но я очень смущен тем, как рисовать внутри него.
К концу моего кода у меня неудачная попытка рисования внутри панели.
Может ли кто-нибудь объяснить/показать, как использовать графику в примере, подобном этому?
Все примеры, которые я нашел, создают класс и расширяют его с помощью JPanel , но я не знаю, могу ли я это сделать, поскольку он был сгенерирован в netbeans.
Мне нужно рисовать внутри JPanel внутри моего JFrame . Я не знаю, где поставить графический класс.
Содержание
- Класс JavaPaintUI
- Снимок экрана
- Экранный снимок
- Другие примеры — больше подходят для нескольких строк и нескольких сегментов линии
Класс JavaPaintUI
Снимок экрана
Все дело в JFrame , а белая часть в центре — jPanel2 , на что я хочу рисовать.
Обратите внимание на дополнительные комментарии.
Экранный снимок
Другие примеры — больше подходят для нескольких строк и нескольких сегментов линии
HFOE поставил хорошую ссылку в качестве первого комментария к этой теме. Camickr также имеет описание активной картины по сравнению с рисунком BufferedImage в статье «Подход под заказ» .
См. также этот подход, используя рисунок в BufferedImage .
При работе с графическими пользовательскими интерфейсами вам нужно помнить, что рисование на панели выполняется в Java AWT/Swing event queue. Вы не можете просто использовать объект Graphics вне paint() / paintComponent() /etc. Методы.
Однако вы можете использовать технику под названием Буферизация кадров «. В принципе, вам нужно иметь BufferedImage и рисовать непосредственно на нем (см. Метод createGraphics() ; этот графический контекст, который вы можете сохранить и повторно использовать для нескольких операций на тот же BufferedImage экземпляр, не нужно воссоздавать его все время, только при создании нового экземпляра). Затем в JPanel paintComponent() вам просто нужно нарисовать экземпляр BufferedImage до JPanel . Используя этот метод, вы можете легко выполнять операции масштабирования, трансляции и вращения с помощью аффинных преобразований.
Источник: