Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
13 / 13 / 5
Регистрация: 16.05.2011
Сообщений: 152
Записей в блоге: 2

Graphics. Рисование в другом методе

18.04.2013, 20:49. Показов 2909. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Возникли сложности в реализации приложения использующего компоненты Graphics.
Я пишу программу кроссворд все клеточки и цифры рисуются в paint(Graphics g); и насколько я знаю, рисовать можно только внутри этого метода. Также у меня присутствует поле ввода ответа на вопрос и кнопка - "ОТВЕТИТЬ" при нажатии которой я хотел вызвать процедуру рисования слова поверх клеток.
Т.к. рисование может происходить только в paint(...) я столкнулся с проблемой рисования ответа, потому что изначально хотел просто создать метод DrawAnswer() который определял Graphics g и благополучно рисовал текст.
Помогите пожалуйста, каким способом можно реализовать данную процедуру?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2013, 20:49
Ответы с готовыми решениями:

Рисование в С++, graphics.h
Здравствуйте, помогите нарисовать корабль в С++, что плывет по морю, при помощи библиотеки #include<graphics.h>. Буду признателен за...

Graphics: рисование в памяти
Доброго времени суток!!! Как прорисовать изображение на Graphics в памяти, а не на компоненте. Например в C++ Builder можно сделать...

С# Graphics рисование треугольника $$$
Всем привет! Есть программа графическая рисовалка, в ней реализованны с помощью Graphics класса, такие функции как овал, прямоугольник,...

3
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
19.04.2013, 10:53
Создаете класс с методом draw, в котором реализуете Ваше рисование (то, что собирались в DrawAnswer рисовать). Экземпляр этого класса создаете в том же классе, где метод paint (кстати, лучше использовать paintComponent), а в paint проверяете - если ссылка не пустая, передаете в draw Graphics и рисуете. Вот это почитайте:
0
13 / 13 / 5
Регистрация: 16.05.2011
Сообщений: 152
Записей в блоге: 2
19.04.2013, 13:07  [ТС]
Skipy,
Создаю класс:
Java
1
2
3
4
5
6
7
class DrawAnswer
{
    public void Draw(Graphics g)
    {
        g.DrawString("HELLO!", 100, 100);
    }   
}
Вот класс в котором находится paint:
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
public class Crossword implements ActionListener {
 
[B]//Создаю экземляр класса DrawAnswer[/B]
    DrawAnswer drawAnswer = new DrawAnswer();
    
    JButton jButton = new JButton("Ответить");
 
    public void DrawWindow() {
        jButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(jTextField.getText().equalsIgnoreCase(atributs.get(jList.getSelectedIndex()).unswer))
                {
                    jLabel.setText("ПРАВИЛЬНО!!!!");
                    //Draw(g);
                }
                else
                {
                    jLabel.setText("НЕПРАВИЛЬНО!!!!");
                    //Draw(g);
                }
            }
        });
 
        
    public void paint(Graphics g)
    {
        super.paint(g);
        
//ТЕСТ функции Draw :)
        drawAnswer.Draw(g);
    }
            
}
 
    @Override
    public void actionPerformed(ActionEvent e) {
 
    }
}
Сразу хочу сказать что код я урезал, чтобы проще было.

Обработчик кнопки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
 jButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(jTextField.getText().equalsIgnoreCase(atributs.get(jList.getSelectedIndex()).unswer))
                {
                    //Рисуем правильный ответ
                }
                else
                {                    
                    //Сообщение об ошибке в ответе
                }
            }
        });
в случае правильного ответа должна вызываться функция Draw.
Как в Draw передать ссылку на Graphics g?
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
19.04.2013, 16:58
Не так.

Изначально

Java
1
DrawAnswer drawAnswer = null;
Дальше, если правильно - тогда только создаете экземпляр через new DrawAnswer. И устанавливаете его экземпляру Crossword. А в paint - if (drawAnswer != null) drawAnswer.draw(g)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2013, 16:58
Помогаю со студенческими работами здесь

Рисование с использованием graphics.h
Сабж. Из среды имеется только Visual Studio 12. Препод упорот и требует, чтобы программа компилировалась и запускалась на turbo C++ и TP...

Вывод массива в другом методе
Как сделать вывод массива gr_list в методе output из метода addPerson? И проверьте пожалуйста на эффективность. import java.util.Scanner;...

Вызов переменной в другом методе
Здравствуйте! 2 кнопки на форме - одна выбирает файл в проводнике - другая его запускает. В последствии - хочу еще поле, для...

Заполнение массива в другом методе
Хочу заполнить массив первого класса во втором, но он не заполняется. class Program { static void Main(string...

Работа с Graphics: Рисование кистью
Подскажите что почитать. Хочу узнать как рисовать средствами c# кистью. Не просто точкой, а кистью, например крестиком. На подобие...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru