Работа с 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д