Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 3

Работа с графикой

14.10.2013, 20:20. Показов 1290. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я прошу прощения, если подобные темы уже были, но
У меня такая проблема, я изучаю яву по книге Г.Щилда, книжка просто отличная, но только 1 глава, во 2, где работа с графикой все очень поверхностно и тяжко для новичка.
У меня есть задача - создать програмку, где мы выбираем какую фигуру строить (эллипс или окружность), с помощью кнопок или переключателей, в зависимости от этого появляются окна для ввода радиуса(-ов).
Потом в зависимости от того, что мы ввели щелкаем мышкой и создается окружность или эллипс с заданными радиусами.
как по отдельности каждый из этих пунктов реализовать - я знаю, то есть как создать переключатели или кнопки, как создать текстовую область, как по щелчку мыши строить. Но совершенно никак не получается создать программу, которая все это делает.

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

Буду крайне благодарен, если кто-то поможет с программой, ну или подскажет какой литературой пользоваться чтобы понять как все скомпоновать вместе и чтобы работало. Ну или поможет с похожим примером.
Прошу извинить, если таких тем уже было миллион)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2013, 20:20
Ответы с готовыми решениями:

Работа с графикой
Ребят прошу вашей помощи, не особо догоняю эту тему, мне нужно чтобы цвет овала менялся по нажитии кнопки Код: public class...

Работа с графикой
Нужно создать форму 500 на 500 и нарисовать на ней что-нибудь.

Работа с графикой Java SE
Помогите пожалуйста, я новичок в java, есть 2 класса, один из которых основной:public class Graphic extends JPanel { ...

5
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
14.10.2013, 21:31
История похожа на попытку навешать лапшу.
"Я изучаю язык, но сделайте мне вот такую задачу...."
При этом ни строчки своего кода.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.10.2013, 14:42
Цитата Сообщение от ExFlepsik Посмотреть сообщение
Так же я не очень понимаю как с помощью обработчика событий рисовать
"Очевидный вариант":
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package easybudda.examples.drawpoints;
 
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.awt.Point;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
 
@SuppressWarnings("serial")
class Holst extends JPanel {
    private ArrayList<Point> points;
    
    Holst() {
        super();
        points = new ArrayList<Point> ();
        
        setOpaque(true);
        setBorder(BorderFactory.createLineBorder(Color.BLACK));
        setBackground(Color.WHITE);
        setFocusable(true);
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent me) {
                points.add(new Point(me.getX(), me.getY()));
                repaint();
            }
        });
    }
    
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(600, 450);
    }
    
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        for ( int i = 1; i < points.size(); ++i )
            g.drawLine(points.get(i - 1).x, points.get(i - 1).y, points.get(i).x, points.get(i).y);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package easybudda.examples.drawpoints;
 
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
public class DrawPoints {
    private Holst holst;
    
    DrawPoints() {
        holst = new Holst();
        
        JFrame mainFrame = new JFrame("Draw points");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.add(holst);
        mainFrame.pack();
        mainFrame.setVisible(true);
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new DrawPoints();
            }
        });
    }
}
1
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 3
15.10.2013, 19:49  [ТС]
easybudda, спасибо большое за пример с использованием swing'a.

И если не сложно, не могли бы вы разъяснить эти строчки:
Java
1
2
mainFrame.add(holst);
mainFrame.pack();
И все же, эта программа именно перерисовывает строчки из списка, а можно ли сделать чтобы поверх старого рисовалось ?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.10.2013, 21:02
Цитата Сообщение от ExFlepsik Посмотреть сообщение
можно ли сделать чтобы поверх старого рисовалось ?
Можно сделать, чтобы перерисовывалась только та часть, на которой что-то происходит - у функции repaint() есть перегруженная версия с параметрами, задающими область, которую надо перерисовать...
0
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 3
16.10.2013, 00:30  [ТС]
Это да, но в случае с линиями, если они пересекаются, то никак?
Я просто именно сам принцип хочу понять как строятся программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2013, 00:30
Помогаю со студенческими работами здесь

Работа с графикой и обработкой событий
Здравствуйте форумчане!!! Вопрос такой: Нужно нарисовать большое клечатое поле ( 50 на 50 к примеру и больше ) , хочется сделать...

Работа с графикой и программирование потоков
Работа с графикой и программирование потоков. 1. Разработать абстрактный класс движущегося (изменяющегося) графического объекта....

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

Работа с графикой
Помогите с простой задачкой , имеем 2 Image или shape которые двигаются по окружности , начерчена конва нашей окружности в крейт форм ( не...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru