2015-05-10 4 views
0

Инструкции - создать объекты Crayon с высотой, расположением и цветом. Объект также должен рисовать карандаш. Программа должна иметь и держать 8 разных карандашей разных цветов. Мелки должны помочь в ArrayList. Нам требуются три класса: Crayon, CrayonBoxComponent и CrayonBoxViewer. Мои классы просто не работают, и я не уверен, как подключить эти три класса. Кроме того, я не знаю, как рисовать карандаш внутри объекта Crayon. Кроме того, карандаши должны быть нарисованы с использованием loop, которые я также не знаю, как это сделать. Спасибо!Пытаясь создать три класса и нарисуйте карандаш. Как рисовать карандаши в конструкторе?

import java.awt.*; 
import java.util.Random; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 

public class Crayon extends JComponent 
{ 
    int loc; 
    int h; 
    Color myColor; 
    private JPanel panel; 

    public Crayon(int location, int height, Color input) 
    { 
     loc=location; 
     h=height; 
     myColor=input; 

    } 

    public void paint(Graphics g) 
    { 
     Graphics2D g2 = (Graphics2D) g; 
     g2.setColor(myColor); 
     g.fillRect(loc, 40, 40, h); 



    } 


} 

...

import java.awt.*; 
import java.util.Random; 
import javax.swing.JComponent; 
import java.util.ArrayList; 
class CrayonBoxComponent extends JComponent 
{ 

    public void paint(Graphics g) 
    { 
    //typecast 
    Graphics2D g2 = (Graphics2D) g; 
    ArrayList<Crayon> box = new ArrayList<Crayon>(); 

    Crayon c1=new Crayon(10, 200, Color.RED); 
     box.add(c1); 
    Crayon c2=new Crayon(60, 200, Color.BLUE); 
     box.add(c2); 
    Crayon c3=new Crayon(110, 200, Color.CYAN); 
     box.add(c3); 
    Crayon c4=new Crayon(160, 200, Color.GREEN); 
     box.add(c4); 
    Crayon c5=new Crayon(210, 200, Color.MAGENTA); 
     box.add(c5); 
    Crayon c6=new Crayon(260, 200, Color.ORANGE); 
     box.add(c6); 
    Crayon c7=new Crayon(310, 200, Color.BLACK); 
     box.add(c7); 
    Crayon c8=new Crayon(360, 200, Color.YELLOW); 
     box.add(c8); 



    } 


} 

....

import java.awt.*; 
import java.util.Random; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 

public class CrayonBoxViewer 
{ 
    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame(); 

     frame.setSize(1000, 1000); 
     frame.setTitle("Crayon Box"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     CrayonBoxComponent component = new CrayonBoxComponent(); 
     frame.add(component); 

     frame.setVisible(true); 
    } 
} 

ответ

2

Я сохранил свой Crayon класс и ваш CrayonBoxView класс. Внутри CrayonBoxComponent класса, я сделал это

import java.awt.*; 
 
import javax.swing.JComponent; 
 
import java.util.ArrayList; 
 

 
class CrayonBoxComponent extends JComponent 
 
{ 
 
    public ArrayList<Crayon> addCrayons() 
 
    { 
 
\t ArrayList<Crayon> box = new ArrayList<Crayon>(); 
 
\t 
 
\t Crayon c1=new Crayon(10, 200, Color.RED); 
 
     box.add(c1); 
 
     Crayon c2=new Crayon(60, 200, Color.BLUE); 
 
     box.add(c2); 
 
     Crayon c3=new Crayon(110, 200, Color.CYAN); 
 
     box.add(c3); 
 
     Crayon c4=new Crayon(160, 200, Color.GREEN); 
 
     box.add(c4); 
 
     Crayon c5=new Crayon(210, 200, Color.MAGENTA); 
 
     box.add(c5); 
 
     Crayon c6=new Crayon(260, 200, Color.ORANGE); 
 
     box.add(c6); 
 
     Crayon c7=new Crayon(310, 200, Color.BLACK); 
 
     box.add(c7); 
 
     Crayon c8=new Crayon(360, 200, Color.YELLOW); 
 
     box.add(c8); 
 
     
 
     return box; 
 
    } 
 

 
    public void print(Graphics g) 
 
    { 
 
\t Graphics2D g2 = (Graphics2D) g; 
 
\t for (int i = 0; i < addCrayons().size(); i++){ 
 
\t \t addCrayons().get(i).paint(g2); 
 
\t } 
 
    } 
 
    
 
}

EDIT: Вы должны также, вероятно, изменить высоту и ширину пастельных прямоугольников, чтобы они выглядели больше как мелки

EDIT2: Я случайно неправильно назвал метод, который я назвал. Я переименовал свой предыдущий метод paint в print и исправил ошибку в этом методе.