![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Yulia13666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Мне необходимо чтобы от фигуры квадрат наследовался перечеркнутый квадрат. Я так понимаю мне надо сначала создать абстрактный класс с методом для прорисовки, а в производных классах уже реализовать этот метод. Но я не знаю как передать в этот метод параметр Graphics g, который необходимый для рисования. Помогите пожалуйста!
|
|||
|
||||
Nofate |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
В чем вопрос? )) -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
|||
|
||||
Yulia13666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Вопрос в том, ЧТО потом после создания экземпляра класса и вызова метода записать для параметра g??
StrokedSquare SS=new StrokedSquare(); SS.draw(???) |
|||
|
||||
Nofate |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
Раз вы рисуете квадраты значит есть Graphics, на который они рисуются.
Например окно, унаследованное от JFrame, переопределяющее метод update(Graphics g). Вот этот g и передавайте Это сообщение отредактировал(а) Nofate - 8.5.2010, 22:05 -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
|||
|
||||
Yulia13666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
/*
* To change this template, choose Tools | Templates * and open the template in the editor. */ package javaapplication5; import java.awt.*; import javax.swing.*; class Square { public void draw(Graphics g) { ... } } class StrokedSquare extends Square { public void draw(Graphics g) { ... } } public class Main { public static void main(String[] args) { JFrame jf = new JFrame("Пример "){}; jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setSize(300 , 300); jf.setVisible(true); StrokedSquare f =new StrokedSquare(); f.draw(g); } } Nofate, помогите, куда здесь надо дописать update(Graphics g) чтобы заработало? |
|||
|
||||
pathfinder |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 2 Всего: 10 |
Код писал с руки, поэтому косяки в написании методов/констант исправить вручную.
|
|||
|
||||
Yulia13666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Спасибо, конечно pathfinder, но я только начала изучать Java, и этот код немного сложноват и не понятен. Мне бы как-то модифицировать код, который написан в предидущем сообщении.
|
|||
|
||||
pathfinder |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 2 Всего: 10 |
В честь Дня Великой Победы минут через десять выложу полный, со всеми комментариями, готовый к работе пример
|
|||
|
||||
Yulia13666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Спасибо большое!! буду ждать!!!
|
|||
|
||||
pathfinder |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 2 Всего: 10 |
Проект для NetBeans 6.8. Посмотреть пример можно запустив /dist/JGraphic.jar
Проект Если будут вопросы - помечай коментариями те места что не понятны и выкладывай код(тока заварчивай код в тэги) |
|||
|
||||
Yulia13666 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Спасибо большое за программу, очень выручил!!!
Я поняла все кроме вот этого. Напиши вообщем что этот код делает!
Добавлено через 14 минут и 9 секунд И еще несколько строк
|
||||
|
|||||
pathfinder |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 2 Всего: 10 |
Рисовать можно только на графических компонентах. То на том, в чем встроена возможность рисовать на экране.
Поэтому в твоем случае можно было пойти двумя путями: 1) Square сделать потомком JComponent. 2) Дать возможность Square отрисовывать себя на другом компоненте. 1 подход дорогостоящий. Поэтому я использовал 2. Что-бы вмешаться в процедуру отрисовки графического компонент необходимо переопределить метод paintComponent(Graphics g). Он вызывается всякий раз когда операционная система решит что необходимо перерисовать часть экрана(на которой расположен на компонент(хотя для Swing все чуть-чуть иначе). Метод repaint() позволяет нам самим сделать запрос на перерисовку компонента, которым мы и пользуемся после добавления новых Square(нам же надо их отрисовать, если не вызвать repaint они отрисуются только если мы растянем окно). Вот собственно и все: в качестве графического компонента, на котором мы будем рисовать, берем JPanel(хотя можно взять любой другой), Square которые мы хотим отрисовать естественно необходимо где-то хранить(по-этому сохраняем их в ArrayList - динамический массив). Т.е. вся работа по отрисовке идет в методе paintComponent(Graphics g). |
|||
|
||||
Yulia13666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Спасибо большое за помощь, pathfinder!!!
|
|||
|
||||
pathfinder |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 2 Всего: 10 |
Ю а, как говорится, вэлкам )
|
|||
|
||||
irdis13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.5.2010 Репутация: нет Всего: нет |
А что значит в методе public void add(Square ... squareList) "..." я просто начинающий, пишу только пол года, но такого не встречал
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |