Работа с Choice на Java
Формулировка задачи:
Здравствуйте)
При выборе цвета из Choice должен меняться цвет фрактала. У меня почему-то не работает.
Заранее огромное спасибо!)
Вот код:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D; //Точка
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class Kr_Koha extends Applet implements ActionListener, ItemListener{
private Graphics2D g2 = null;
Choice cvet = new Choice();
private Integer biteger;
int Number;
public void init(){
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = biteger.parseInt(getParameter("height"));
cvet.reshape(160, 55, width / 4, height / 5);
cvet.add("Black");
cvet.add("Blue");
cvet.add("Cyan");
cvet.add("Dark Gray");
cvet.add("Gray");
cvet.add("Green");
cvet.add("Light Gray");
cvet.add("Magenta");
cvet.add("Orange");
cvet.add("Pink");
cvet.add("Red");
cvet.add("White");
cvet.add("Yellow");
add(cvet);
cvet.addItemListener(this);
}
public void paint(Graphics g){
setBackground(new Color(252,239,213));
setSize(700,600);
Font font=new Font("Times New Roman",Font.BOLD,25);
Color color1= new Color(250, 74, 67);
g.setColor(color1);
g.setFont(font);
g.drawString("Кривая Коха", 250, 20);
Font font1=new Font("Times New Roman",Font.ITALIC,18);
Color color2= new Color(250, 104, 218);
g.setColor(color2);
g.setFont(font1);
g.drawString("Цвет фрактала",30,70);
g2 = (Graphics2D) g;
g2.setPaint(Color.blue);
drawCurveKochRecur(new Line2D.Double(500,300,150,300), 8);
}
private void drawCurveKochRecur(Line2D line, int maxIter, int curIter) {
drawLine(line);
if (curIter <= maxIter){
double a = line.getP1().distance(line.getP2());
a = a /2;
g2.drawString(String.valueOf(a),2000,Integer.parseInt(String.valueOf(Math.round(10+(a*10)))));
double h = Math.sqrt(Math.pow(a, 2) - Math.pow((a / 2), 2) / 4);
Point2D ps = line.getP1();
Point2D pe = line.getP2();
Point2D pm = new Point2D.Double((ps.getX() + pe.getX()) / 2, (ps.getY() + pe.getY()) / 2);
Point2D p1 = new Point2D.Double((2 * ps.getX() + pe.getX()) / 3, (2 * ps.getY() + pe.getY()) / 3);
Point2D p2 = new Point2D.Double((2 * pe.getX() + ps.getX()) / 3, (2 * pe.getY() + ps.getY()) / 3);
Point2D p3 = new Point2D.Double(
pm.getX() + (h * (-p2.getY() + pm.getY())) / (a / 2),
pm.getY() + (h * (p2.getX() - pm.getX())) / (a / 2)
);
// Рекурсия
curIter++;
drawCurveKochRecur(new Line2D.Double(ps,p1), maxIter, curIter);
drawCurveKochRecur(new Line2D.Double(p1,p3), maxIter, curIter);
drawCurveKochRecur(new Line2D.Double(p3,p2), maxIter, curIter);
drawCurveKochRecur(new Line2D.Double(p2,pe), maxIter, curIter);
}
}
private void drawCurveKochRecur(Line2D line, int maxIter) {
drawCurveKochRecur(line, maxIter,0);
}
/** Нарисовать линию */
public void drawLine(Line2D line) {
g2.draw(new Line2D.Double(line.getP1(), line.getP2()));
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void itemStateChanged(ItemEvent e) {
Number=cvet.getSelectedIndex();
if(Number==2)
g2.setPaint(Color.cyan);
}
}Решение задачи: «Работа с Choice на Java»
textual
Листинг программы
drawCurveKochRecur(new Line2D.Double(500,300,150,300), 8);