2013-03-04 2 views
0

Мы только что научились создавать наш собственный класс, и это особое задание нам пришлось работать с графикой. Мы должны были нарисовать карандаш, а затем создать тестовую программу, в которой есть пять карандашей, расположенных рядом друг с другом (поэтому мы просто меняем цвет и x, y каждого). Я знаю, как изменить цвет и х, y координаты, но мой вопрос ...Как создать графические экземпляры в java-апплете

Как мне «печатать» каждый карандаш? Да, это апплет, и я знаю, что мне нужен файл .html. Но что именно идет в тестовой программе, чтобы карандаш отображался при запуске файла .html? Раньше я запускал не-апплеты в тестовых программах, используя System.out.println, но никогда не использовал графику. Это будет только System.out.println(Crayon);?

Кроме того, как мне получить несколько цветных карандашей? Я предполагаю, что это Crayon crayons = new Crayon;, а затем следующий может быть «Crayon crayons2 = new Crayons;`? Я не уверен.

Координаты x, y необходимо изменить с каждым карандашом, но UML для назначения сказал мне, чтобы я не делал им переменные экземпляра, а вместо этого помещал его в «public void paint» (Graphics g, int x, int у). То, что я до сих пор для программы испытаний (может или не может быть правильными):

import javax.swing.JApplet; 
import java.awt.*; 

public class BoxOfCrayons extends JApplet { 
    Crayon first = new Crayon (Color.red, 50, 250) 
+0

Это действительно зависит от того, как вы построили свой класс. Большинство графических объектов java, которые я написал, имеют событие draw в своем классе, которое вызывается в конструкторе. Поэтому вызов 'Crayon first = new Crayon (20, 40, 'red')' делает красный карандаш на (20,40). Если это не в вашем конструкторе, вам придется каким-то образом запустить функцию draw. Однако вам придется отредактировать сообщение и предоставить код, прежде чем мы сможем дать более точный ответ. – Neograph734

+0

Вы хотите нарисовать текст на экран или выходной текст на консоль? – MadProgrammer

+0

* «Это будет просто« System.out.println (Crayon); »?» * Что произошло, когда вы его попробовали? –

ответ

0

начинает с чтением через 2D Graphics.

В принципе, вам нужно будет создать какой-то список Cryon s. Это может быть либо Collection, либо массив, в зависимости от того, что вы знаете. Я лично использовал бы ArrayList, поскольку он является гибким и простым в использовании, но не страдает от тех же ограничений, что и массив.

Затем создайте свой пользовательский компонент (то есть BoxOfCryons), который простирается от JPanel. Переопределить этот класс paintComponent метод. В рамках этого метода пройдите через список Cryon s и нарисуйте каждый, увеличивая смещение x на ширину последнего Cryon.

protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    Graphics2D g2d = (Graphics2D) g.create(); 
    int x = 0; 
    int y = 0; 
    for (Crayon crayon : cryons) { 
     crayon.paint(g2d, x, y); 
     x += crayon.getWidth(); 
    } 
    g2d.dispose(); 
} 

Создайте себе новый класс, который простирается от JApplet. В методе init настройте диспетчер макетов апплетов на BorderLayout и добавьте к нему экземпляр класса BoxOfCryons.

Смежные вопросы