Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Ламерский вопрос.


Автор: flamer 1.5.2002, 12:30
Я совсем недавно начал программировать на JAVA и у меня пока нет никакой реально сколько-нибудь стоящей литературы для его изучения.
Попробовал написать апплет:
Код

package some;
import java.awt.*;
import java.lang.InterruptedException;
public class JavaTest extends java.applet.Applet
{
public void Init() {}
public void paint(Graphics graph)
{
int a;
 for(a=0;a<45;a++)
 {
 graph.wait();
 graph.drawLine(0,0,a,20);
 }
}
}

При его проверке, JBuilder выдает сообщение, про строку "graph.wait();":

"JavaTest.java": Error #: 360 : unreported exception: java.lang.InterruptedException; must be caught or declared to be thrown at line 15, column 9

Что надо сделать, чтобы все работало правильно и почему оно не работает?Заранее спасибо.

Автор: BearBeer 2.5.2002, 12:58
Ну просчения просить не надо :)
Каждый из нас в чем-то ламер, для етого и собрались - делиться опытом. :)

Теперь о деле.
Во-первых, каждый апплет должен имплементировать один из методов:
init, start и paint

Во-вторых, точно не помню (сорьки, сейчас абсолютно нет времени проверить - много работы, возможно вечером отвечу подробнее) - скорее всего обьект выбрасывает исключение, которое должно быть захвачено в структуpy:

try {
<kod>
}
catch (<NameOfException> exception)
{
<kod obrabotki iskluchenija>
}

если ты есче новичек в программировании, и тебе ето слегка непонятно - напиши, постараюсь вечером расписать подробней :))

А все-таки приятно, что у нас все больше людей интересуются Джава! :)

Автор: flamer 2.5.2002, 19:09
Код

package some;
import java.awt.*;
import java.lang.InterruptedException;
public class JavaTest extends java.applet.Applet
{
public void Init() {}
public void paint(Graphics graph)
{
try
{

int a;
 for(a=0;a<45;a++)
 {
 try{wait(10);}
 catch(InterruptedException exception){}
 graph.drawLine(0,0,a,20);
 }
}
}
}

Все компилится, но нифига не делает вообще, только  внизу в самом билдере ругается:
Цитата

Exception occurred during event dispatching:
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at fire.JavaTest.paint(JavaTest.java:13)
at sun.awt.RepaintArea.paint(RepaintArea.java:298)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:199)
at java.awt.Component.dispatchEventImpl(Component.java:2665)
at java.awt.Container.dispatchEventImpl(Container.java:1216)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:336)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:134)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:96)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)
Exception occurred during event dispatching:
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at fire.JavaTest.paint(JavaTest.java:13)
at sun.awt.RepaintArea.paint(RepaintArea.java:298)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:199)
at java.awt.Component.dispatchEventImpl(Component.java:2665)
at java.awt.Container.dispatchEventImpl(Container.java:1216)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:336)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:134)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:96)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)

И что вообще означает throw, catch, try и т.п.?

Автор: flamer 2.5.2002, 19:10
Ой, ошибся:
graph.wait(10);

Автор: BearBeer 2.5.2002, 21:11
О!

с этого и начнем. Только я это сделаю попозже - сейчас ненадолго заглянул.
Образно - если под боком книга по какому-нибудь языку программирования, это описано в разделе "обработка исключений".

Удачи! Если нужны комменты - дам попозже. Если зайду сюда и еще ниче не будет (комментов) - дам краткую лекцию по исключениям.

// да. и удобней будет - если зарегишся, на форуме. на мыло сразу ответы будут ходить :)

Автор: flamer 3.5.2002, 08:49
Зарегился. :)
Книг нет вообще, но по отрывочным сведениям из инета понял, что wait допустила какую-то ошибку, которую
catch(InterruptedException exception){}
и обработала, но не исправила и закончила выполнение проги.

Обращаю внимание:
Комментов нет
:)

Автор: BearBeer 3.5.2002, 11:26
Ну вот ты стал на верный путь к джава программированию :)

Половил исклучения.

все правильно. Ета функция выкидавает исклучение, которое надо обработать (ето делает операто траж-кетч).

Сильно извиняюсь, что есче ничего не написал - загруз на работе. Чут выколупаюсь отсюда - расскажу про исклучения в Джаве подробно. Но основной смысл ты вижу понял - поздравляю :)

Автор: BearBeer 3.5.2002, 11:29
да, а исправлять там ничего и не надо было.

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

;)

Автор: flamer 3.5.2002, 14:06
Цитата
Не будет и ошибки при работе проги

Дык почему тогда graph.drawLine(0,0,a,20); не воркает? :huh
Значит исключит. ситуация уже возникла?Более того, я написал:
Код

package some;
import java.awt.*;
import java.lang.*;
public class JavaTest extends java.applet.Applet
{
public void Init() {}
Object das;
public void dizes(Object diz)
{
diz.wait(10);
}
public void paint(Graphics graph)
{
try
{

int a;
for(a=0;a<45;a++)
{
try{dizes(das);}
catch(InterruptedException exception){}
graph.drawLine(0,0,a,20);
}
}
}
}

Так она вообще ничего внизу не пишет, но, опять же, ничего и не работает. :lookaround

Автор: flamer 3.5.2002, 14:26
Блин, что со мной, ерунду всякую пишу. :angry:
Код

package some;
import java.awt.*;
import java.lang.*;
public class JavaTest extends java.applet.Applet
{
public void Init() {}
 public void dizes(Object diz)
 {
 try{diz.wait(10);}
 catch(InterruptedException exception){}
 }
public void paint(Graphics graph,Object das)
{
int a;
 for(a=0;a<45;a++)
 {
 dizes(das);
 graph.drawLine(0,0,a,20);
 }
}
}

Автор: BearBeer 3.5.2002, 15:50
Цитата
Блин, что со мной, ерунду всякую пишу.  


:)

Так просто та функция, которя "не воркает" (я ее не пишу, так как с работы только транслитом могу :( ), так вот она исключение не выкидывает. Так определена.

У тебя с Инетом все Ок? И с англижским? Если да сежчас пороюсь нажду их описания. если нет - скажи, я добавлю в "курс лекций" :)

Автор: BearBeer 3.5.2002, 15:54
а насчет не работает - посмотри тему "Getting started". Там "курс молодого бойца" по апплетам :)

Если та фигня заработает - будем тебя править :)

// я просто до сих пор не имею возможности проверить твой апплет - сюда одним глазом раз в 2 часа могу заглянуть...

Автор: flamer 3.5.2002, 16:30
Цитата
она исключение не выкидывает

И что с того?

С инглишем у меня все в полном порядке, так что можешь
throw ОписаниеФункции; :)

Цитата
Если та фигня заработает - будем тебя править

Та фигня заработала, она не могла не заработать :) , но вся феня в том, что если убрать этот wait (из моей фигни), то она пойдет рисовать как миленькая, а так - нивкакую.  ???

Автор: BearBeer 3.5.2002, 16:38
а! понял, тебе делай нужен?

Ок. Дома посмотрю - отлажу.
===

tol'ko: <funktion> throws <exception>

i obichno v Java "function" == "method" - eto ja k neimenovaniju pridirajus' :)

Автор: flamer 3.5.2002, 16:46
Слушай, а что extends Object означает?

Автор: BearBeer 3.5.2002, 16:49
наследование.

то есть применяя данное ключевое слово, ты указиваеш, что новыж класс наследует все свойства указанного после слова.

Класс Обэцт - самый верхний в иерархии классов в Джава.

если что непонажтно - обьясню подробней

Автор: flamer 3.5.2002, 17:09
Понятно...
Я сейчас Color ломаю, вот смотри:
Есть некий setColor(Color);, который устанавливает цвет рисования.
setColor(Color.white);работает.
Есть также (конструктор?) Color(int r, int g, int b), который этот самый колор ставит.Как с помощью Color(int r, int g, int b) создать цвет, чтобы впоследствии впихнуть его в сетколор?

Автор: BearBeer 3.5.2002, 17:28
стоп-стоп. "Некий"? :0 :)

какой?
java.awt.color?

method kakogo klassa? Ili eto tvoj method?

Автор: BearBeer 3.5.2002, 17:34
насколько я понял по похожим конструкторам цветов, что нашел в стандартных пакетах - ети числа относятся с параметрами RGB цветности монитора.

То есть:
обявляеш обэкт данного класса (называеш как хочеш), в конструкторе задавая цветность. А потом етот обьект должен использоваться как цвет. Наверняка в графическому обьекту, какож ты рисуеш, можно передать цвет как обьект того класса, которым ты его определяеш.

// прочитал - замутил круто :)

Автор: flamer 3.5.2002, 17:34
java.awt.Color - обьект
и
setColor(Color) - метод объекта java.awt.Graphics

Автор: flamer 3.5.2002, 17:37
Цитата
обявляеш обэкт данного класса (называеш как хочеш), в конструкторе задавая цветность

А как энтот объект обьявить?
public void paint(Graphics g,Color(111,111,111) col) - не получается

Автор: flamer 4.5.2002, 08:13
Ураа! :hehe
Кажись у меня получилось - вместо
Object.wait(10) - Thread.currentThread().sleep(10000);
, а
setColor(new Color(111,111,111));

BearBeer, если Thread это выполняемая нить (слова для меня не очень понятные), значит одновременно может выполняться несколько методов?

Автор: BearBeer 4.5.2002, 11:12
по-русски - это поток.
да. может выполняться.

Автор: flamer 4.5.2002, 18:39
Спасибо за помощь!  ;)

Автор: BearBeer 5.5.2002, 21:19
не за что :)
код покажи, пока я дома - может чего подправим? ;)

Автор: flamer 6.5.2002, 15:27
А кода нет, я ничего конкретного не делаю, просто обучаюсь.

P.S.А что тогда wait делает, если не как delay работает?:)

Автор: Barson 15.11.2002, 00:37
Method wait() rabotaet tolko vnutry blocka "synchronize" or v methode "synchronize". Eto svyazano s zashitoy methoda objecta ot dostupa is drugogo "thread"a.

Автор: desyatnik 17.11.2002, 02:51
Потрясный тред... Ребят, а вы не слышали, что учебники изобрели?
И даже (!) кое-что есть в Сети... Более того (держитесь за насесты,
цыплятки :)) - на русском языке тоже есть (да, куда катится мир!)

Автор: PLAKAT 18.11.2002, 21:13
НЕ ЗНАЮ ЧТО Т XОЧЕШ. если тебя надо что бы программа ето делала, не сразу моэт так будет.  
.....
.....
class JavaTest extends Applet
{
....
....
 public void paint(Graphics grap)
 {
   int i=0;
   try{
      this.sleep(100);
      }catch(InterruptedException intex)
        {
         this.drawString(10,10,"Inter Exept");
        }
    for(i=0;i<45;i++)
    {
     this.drawLine(...);
     repaint();(eto mojno poprobovat)
    }


  }





}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)