Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод подписей к рискам в апплете на графике, Построение графика sin(x) + cos(2*x)  
:(
    Опции темы
Demon2009
Дата 19.3.2009, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.3.2009

Репутация: нет
Всего: нет



Помогите пожайлуста с Java-апплетом!!!

Джавой (Javой) я занимаюсь не первый день, но апплеты начал учить недавно. 

У меня есть апплет Построение графика функции sin(x) * cos(2*x).

Мне нужно сделать так, чтобы из HTML файла были получены параметры левой и правой границы диапазона с помощью метода getParameter(). Затем эти значения должны быть выведены на экран  и между left и right должны находиться значения, которые отличаются от параметра left на некоторый шаг (некоторое число) допустим на 5.

Например:

Если  left="20", right="60". То в результате диапазон должен выглядеть следующим образом: 20 25 30 и т.д.  и так до 60 по оси x.

И каждая подпись к риске (число(значение)) должна размещаться строго по опеределённым координатам под каждой риской. 
Координаты должны вычисляться по обоим осям (x и y) в соответствии с шагом step и определёнными заданными значениями переменных x_new и y_new. 

Как изменить диапазон по оси x и по оси y и вывести его на экран с помощью drawString() по соответствующим координатам используя step и x_new или y_new? 
Как реализовать полностью работоспособный апплет? 
Есть ли в аппелете ошибки и в чём они заключаются?

Пожайлуста напишите код со всеми исправлениями или хотя бы что-нибудь посоветуйте. Искал везде где только можно. Ничего найти похожего не смог.

Вот мой код java-апплета:

Код

import java.applet.Applet;
import java.awt.*;

public class Function2 extends Applet
{  
    int left, right;
    static double a = 1.0D;
    static double b = 1.0D;
    int x_new;
    int y_new;
    int x;
    int y;
    int width;
    int height;
     
    public Function2()
    {
        x_new = 300;
        y_new = 200;
    }

    public void init()
    {
        super.init();
        Color background = getColorParameter("background");
        if (background != null)
        this.setBackground(background);
        if (background == null) 
        setBackground (Color.yellow); 
         String param = new String();
         param = getParameter("left");
         try {
         if (param != null)
            left = Integer.parseInt(param);
         else
            left = 0;
        } catch (NumberFormatException e)
        { left = -1; }
        if (left != 0) 
        left=Integer.parseInt(getParameter("left")); 
         param = getParameter("right");
         try {
         if (param != null)
            right = Integer.parseInt(param);
         else
            right = 0;
        } catch (NumberFormatException e)
        { right = -1; }
        if (right != 0) 
        right=Integer.parseInt(getParameter("right")); 
        setLayout(null);
        Color color = new Color(255, 220, 220);
    }
 
    protected Color getColorParameter(String name) 
    {
      String value = this.getParameter(name);
      try 
    {
      return new Color(Integer.parseInt(value, 16)); 
    }
      catch (Exception e) 
    {
      return null;
    }
    }


    public void paint(Graphics g)
    {
        int step;
        int chislo1 = 12;
        int chislo2 = 6;
        g.setColor(Color.red);
        char c1 = '\226';
        g.setColor(new Color(c1, c1, c1));
        c1 = '|';
        g.setColor(new Color(c1, c1, c1));

// Это требуется изменить

        step = right - left / chislo2;

        for(y = 0; y <= 6; y++)
        {
        g.drawLine(x_new - 5, (y_new + 150) - 50 * y, x_new + 5, (y_new + 150) - 50 * y);
        height = left + step * y;
        g.drawString(String.valueOf(height), 300 + step * y, x_new-250);
        }
        
        step = right - left / chislo1;

        for(x = 0; x <= 12; x++) 
        {
        g.drawLine((x_new + 300) - 50 * x, y_new - 5, (x_new + 300) - 50 * x, y_new + 5);
        width = left + step * x;
        g.drawString(String.valueOf(width), 0 + step * x, y_new + 20);
        } 


        g.setColor(Color.black);
        g.drawLine(x_new - 300, y_new, x_new + 300, y_new);
        g.drawLine(x_new, y_new - 180, x_new, y_new + 180);
        g.setFont(new Font("SansSerif", 14, 12));
        g.drawLine(295,35,300,15); 
        g.drawLine(305,35,300,15); 
        g.drawString("y", 285, 40);
        g.drawLine(585,195,605,200); 
        g.drawLine(585,205,605,200); 
        g.drawString("x", 580, 214); 
        g.setColor(Color.black);
        g.drawLine(132, 2, 132, 2);
        double x = -30D;
        g.setColor(Color.red);
        do
        {
            if(x > 30D)
                break;
            double f = a * (Math.sin(x) + Math.cos(2D * x * b));
            x += 0.001D;
            int i1 = (int)(x * 10D + 300D);
            int j1 = (int)(-f * 10D + 200D);
            if(j1 >= 20 && j1 <= 380)
                g.drawLine(i1, j1, i1 + 1, j1);
        } while(true);
    }
}


Вот код HTML-файла, в который встраивается апплет:

Код

<html>
<head>
<title>
</title>
</head>
<body>
<center>
<applet code="Function2.class" width="610" height="390">
<param name="background" value="FFFF00">
<param name="left" value="20">
<param name="right" value="60">
</applet>
</center>
</body>
</html>


Заранее спасибо.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  start2.rar 3,04 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.