Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
8 / 8 / 7
Регистрация: 12.05.2014
Сообщений: 58

Потоки в Java апплете

12.05.2014, 19:02. Показов 1318. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Есть задача.
Разработать апплет, выводящий изображение кораблика, плывущего по морю мимо острова. (Использование встроенных изображений не допускается. В апплетах необходимо использовать многопоточность).

Просмотрев литературу, что дал преподаватель, получилось следующее.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.awt.*;
import java.applet.*;
 
public class AppletTask extends Applet implements Runnable {
    private Thread T;
    
    private ShapeShip m_ShapeShip = null;
    private ShapeIsland m_ShapeIsland = null;
    
    public void run() {
        setBackground(new Color(201,237,240));
        while(true){
            repaint();
            try {
                T.sleep(10);
            }
            catch(InterruptedException e){ }
        }
    }
    
    public void init() {
        T = new Thread(this);
        T.start();
        
        m_ShapeIsland = new ShapeIsland();
        m_ShapeShip = new ShapeShip();
    }
    
    public void paint(Graphics g) {
        //рисование кораблика
        g.setColor(Color.black);
        g.drawPolygon(m_ShapeShip.ship_x,m_ShapeShip.ship_y,m_ShapeShip.ship_x.length);
        //рисование острова
        g.drawOval(m_ShapeIsland.island_x,m_ShapeIsland.island_y,m_ShapeIsland.island_w,m_ShapeIsland.island_h);
        g.drawArc(m_ShapeIsland.arcIsland_x,m_ShapeIsland.arcIsland_y,m_ShapeIsland.arcIsland_w,m_ShapeIsland.arcIsland_h,m_ShapeIsland.arcIsland_grad, m_ShapeIsland.arcIsland_razv);
        g.drawPolygon(m_ShapeIsland.houseIsland_x,m_ShapeIsland.houseIsland_y,m_ShapeIsland.houseIsland_x.length);
    }
    
    class ShapeShip implements Runnable {
        Thread T;
        int ship_x[], ship_y[];
        public ShapeShip() {
            T = new Thread(this);
            int ship_x[]={90,60,25,10,45,45,30,45,45,90,45,45,90};
            int ship_y[]={140,170,170,140,140,130,130,40,130,130,40,140,140};
            T.start();
        }
        public void run() {
            for(;;){
                for(int i=0;i<ship_x.length;i++) {
                    ship_x[i]+=10;
                }
                try {
                    T.sleep(1000);
                }
                catch(InterruptedException e){}
            }
        }
    }
    
    class ShapeIsland implements Runnable{
        Thread T;
        
        int island_x, island_y, island_w, island_h;
        int arcIsland_x, arcIsland_y, arcIsland_w, arcIsland_h, arcIsland_grad, arcIsland_razv;
        int houseIsland_x[], houseIsland_y[];
        
        public ShapeIsland() {
            T = new Thread(this);
            
            island_x=100;
            island_y=100;
            island_w=400;
            island_h=80;
            
            arcIsland_x=100;
            arcIsland_y=105;
            arcIsland_w=400;
            arcIsland_h=70;
            arcIsland_grad=180;
            arcIsland_razv=180;
            
            int houseIsland_x[]={220,200,260,320,300,300,220,220};
            int houseIsland_y[]={85,85,35,85,85,135,135,85};    
            
            T.start();
        }
        
        public void run() {
            for(;;) {
                for(int i=0; i<houseIsland_x.length;i++) {
                    houseIsland_x[i]+=0;
                }
            island_x+=0;
            arcIsland_x+=0;
            try{
                T.sleep(1000);
            }
            catch(InterruptedException e) {}
        }
    }
}
}
При попытке запустить просмотр через appletviewer, появляется только пустое окно апплета с фоном и все, а командная строка выдает бесконечный список ошибок. К сожалению, сам определить, что и почему еще не могу, так как только начал изучать JAVA.
Под сполейром небольшой снапшот консоли.
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
 
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
 
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at AppletTask.paint(AppletTask.java:32)
        at java.awt.Container.update(Container.java:1988)
        at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255)
        at sun.awt.RepaintArea.paint(RepaintArea.java:232)
        at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:347)
        at java.awt.Component.dispatchEventImpl(Component.java:4937)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:708)
        at java.awt.EventQueue$4.run(EventQueue.java:706)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)

Подскажите, где допустил промах и куда дальше копать?
Кораблик и остров рисовал встроенными методами рисования.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2014, 19:02
Ответы с готовыми решениями:

Потоки Java SE
Задание: Разработать программу на языке Java как в однопотоковом так и в многопотоковом вариантах. Программа должна позволять ввести с...

Java 2 потоки
Дополнительно к копированию в терминал вывести количество символов между соседними пробелами в 13-ой строчке.Помогите пожалуйста, вообще не...

Потоки в Java
Всем привет. Помогите решить пару задачек на яве с потоками. 1. Используя private класс написать параллельную программу, состоящую из...

1
8 / 8 / 7
Регистрация: 12.05.2014
Сообщений: 58
29.05.2014, 19:52  [ТС]
Задача решена.

Под спойлером работающий код

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import java.awt.*;
import java.applet.*;
 
public class AppletTask extends Applet implements Runnable {
    private Thread T;
    
    private ShapeShip m_ShapeShip = null;
    private ShapeIsland m_ShapeIsland = null;
    
    public void run() {
        setBackground(new Color(201,237,240));
        while(true){
            repaint(); 
            try {
                T.sleep(10);
            }
            catch(InterruptedException e){ }
        }
    }
    
    public void init() {
        T = new Thread(this);
        T.start();
        
        m_ShapeIsland = new ShapeIsland();
        m_ShapeShip = new ShapeShip();
    }
    
    public void paint(Graphics g) {
        //рисование кораблика
        g.setColor(Color.black);
        g.drawPolygon(m_ShapeShip.ship_x,m_ShapeShip.ship_y,m_ShapeShip.ship_x.length);
        //рисование острова
        g.drawOval(m_ShapeIsland.island_x,m_ShapeIsland.island_y,m_ShapeIsland.island_w,m_ShapeIsland.island_h);
        g.drawArc(m_ShapeIsland.arcIsland_x,m_ShapeIsland.arcIsland_y,m_ShapeIsland.arcIsland_w,m_ShapeIsland.arcIsland_h,m_ShapeIsland.arcIsland_grad, m_ShapeIsland.arcIsland_razv);
        g.drawPolygon(m_ShapeIsland.houseIsland_x,m_ShapeIsland.houseIsland_y,m_ShapeIsland.houseIsland_x.length);
    }
    
    class ShapeShip implements Runnable {
        Thread T;
        int ship_x[]={90,60,25,10,45,45,30,45,45,90,45,45,90};
        int ship_y[]={140,170,170,140,140,130,130,40,130,130,40,140,140};
 
        public ShapeShip() {
            T = new Thread(this);
            T.start();
        }
        public void run() {
            for(;;){
                for(int i=0;i<ship_x.length;i++) {
                    ship_x[i]+=10;
                }
                try {
                    T.sleep(1000);
                }
                catch(InterruptedException e){}
            }
        }
    }
    
    class ShapeIsland implements Runnable{
        Thread T;
        
        int island_x, island_y, island_w, island_h;
        int arcIsland_x, arcIsland_y, arcIsland_w, arcIsland_h, arcIsland_grad, arcIsland_razv;
        int houseIsland_x[]={220,200,260,320,300,300,220,220};
        int houseIsland_y[]={85,85,35,85,85,135,135,85};
        
        public ShapeIsland() {
            T = new Thread(this);
            
            island_x=100;
            island_y=100;
            island_w=400;
            island_h=80;
            
            arcIsland_x=100;
            arcIsland_y=105;
            arcIsland_w=400;
            arcIsland_h=70;
            arcIsland_grad=180;
            arcIsland_razv=180;
            
            T.start();
        }
        
        public void run() {
            for(;;) {
                for(int i=0; i<houseIsland_x.length;i++) {
                    houseIsland_x[i]+=0;
                }
            island_x+=0;
            arcIsland_x+=0;
            try{
                T.sleep(1000);
            }
            catch(InterruptedException e) {}
        }
    }
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2014, 19:52
Помогаю со студенческими работами здесь

Потоки в Java
Здравствуйте ребята! помогите пожалуйста разобраться с потоками ... как сделать так чтобы 2 потока выполнялись независимо???

Потоки Java
Доброго времени суток. проблема в следующем: Имеется один основной поток, который в свою очередь запускает N потоков. как можно сделать...

Потоки в java
Дали лабу на синхронизацию потоков. Стек. Один поток пополняет, другой удаляет элемент. Вот что у меня получилось. Это верно? Я помню...

Потоки, Java. Семафор
Доброго времени суток форумчане, недавно в обучении столкнулся с потоками, вроде все работает как должно, но иногда при запуске 2 потока...

Потоки в Java, вывод
добрый вечер. Помогите сделать задание с потоками, в котором нужно ввести размер массива, ввести название значений в этом массиве. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru