Java applet & Visual Library

0

Witam mam pytanie czy ktoś z was tworzył applet , który opierał się na bibliotece Visual Library ???
Czy jest możliwe stworzenie appletu na podstawie tej biblioteki ???

Mam taki problem pracuje nad NetBeansie i stworzyłem applet, który opiera się na tej bibliotece i jak uruchamiam go w środowisku NetBeans to działa a jak odpalam plik Applet.html który tworzy mi netbeans w katalogu build to mam puste okno (tylko napis Applet HTML Page i miejsce puste gdzie miałby być mój applet ) . W pliku Applet.html znajduje się :

<HTML>
<HEAD>
   <TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>

<H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3>

<P>
<APPLET codebase="classes" code="pl/mad/visual/Applet.class" width=1024 height=640></APPLET>
</P>

<HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT>
</BODY>
</HTML> 

Mógłby ktoś mi pomóc jak uruchomić mój applet na stronie html ??? Wielkie dzieki za POMOC

0

Już mnie więcej domyślam się czemu nie działa rozpakowałem archiwum .jad , które tworzy netbeans w katalogu dist i okazało się że nie dołączył tam bibliotek potrzebnych (org-netbeans-api-visual.jad i org-openide-util.jad ) jak tworzyłem aplikacje java desktop to wszystko było ok z dołączaniem bibliotek potrzebnych do działania aplikacji a w tym wypadku tworzenia appletu netbeans tego nie robi !!! Może wiecie jak i gdzie ustawić w tym środowisku aby automatycznie te biblioteki były dołączone do głównego jad-a

0

sorrki nie jad tylko .jar :)

0

Przy tworzeniu jara z apletem można wskazać mu plik manifestu. Ręcznie przygotowujesz manifest i potem po skompletowaniu całości wysyłasz na serwer z palca.

0

Ok zrobiłem już archiwum z bibliotekami i błąd wyskakujący w konsoli java znikł wiec ok. Ale został inny. Doszedłem do tego że ten błąd powodowany jest przez bibliotekę org-openide-util.jar w programie wykorzystuję ją do : Image img = Utilities.loadImage("pl/maxxio/img/north.gif") myślałem że związane jest to z zabezpieczeniem więc podpisałem applet ale i tak nie rusza. Po wykorzystaniu innego sposobu wczytywania gifa wszystko jest ok ale MUSZĘ WYKORZYSTYWAĆ tą bibliotekę do tej czynności. Tutaj zerknijcie co za błąd wywala w konsoli:

Loaded image: file:/c:/EdytApp/dist/pl/maxxio/img/north.gif
Exception in thread "thread applet-app/pl/maxxio/app/Applet.class-1" java.lang.ExceptionInInitializerError
	at app.visual.Panel.<init>(Panel.java:13)
	at app.visual.Applet.init(Applet.java:39)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission org.openide.util.Lookup read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
	at java.lang.System.getProperty(Unknown Source)
	at org.openide.util.Lookup.getDefault(Lookup.java:107)
	at org.openide.util.IconManager.getLoader(IconManager.java:117)
	at org.openide.util.IconManager.getIcon(IconManager.java:212)
	at org.openide.util.Utilities.loadImage(Utilities.java:2618)
	at app.visual.PowierzchniaGraphScene.<clinit>(PowierzchniaGraphScene.java:25)
	... 4 more

Czy to możliwe że nie można używać tej biblioteki w stosunku do appletów ???

0

Spróbuj zrobić tak:

  1. Umieść obrazki na serwerze,
  2. ustaw w programie URI katalogu z serwerem,
  3. Ładuj obrazki:
Image img = Utilities.loadImage(MY_IMG_DIR + "north.gif");

gdzie MY_IMG_DIR to adres katalogu na serwerze. Java ma to fajnego, że potrafi płynnie potrafi przełączać się pomiędzy adresami lokalnymi i internetowymi.

0

O co w tym chodzi ?

Loaded image: file:/c:/EdytApp/dist/pl/maxxio/img/north.gif

Aplet ma korzystać z plików na komputerze użytkownika ? Jak napisał Koziołek, te pliki muszą być na serwerze.

0

bogdans taka ścieżka bo testowane nie na serwerze.

Zrobiłem tak jak napisał Koziołek wszystko spakowałem do jara i dałem coś takiego :
Image img = Utilities.loadImage(url + "pl/maxxio/img/north.gif");
gdzie url to ścieżka kodu getCodeBase() itd.
I tak nadal nie działa :

Loaded image: http://www.tuadres/pl/maxxio/img/north.gif
java.security.AccessControlException: access denied (java.util.PropertyPermission org.openide.util.Lookup read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
	at java.lang.System.getProperty(Unknown Source)
	at org.openide.util.Lookup.getDefault(Lookup.java:107)
	at org.openide.util.IconManager.getLoader(IconManager.java:117)
	at org.openide.util.IconManager.getIcon(IconManager.java:212)
	at org.openide.util.Utilities.loadImage(Utilities.java:2618)
	at app.visual.PowierzchniaGraphScene.<init>(PowierzchniaGraphScene.java:41)
	at app.visual.Panel.<init>(Panel.java:13)
	at app.visual.Applet.init(Applet.java:39)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception: java.security.AccessControlException: access denied (java.util.PropertyPermission org.openide.util.Lookup read)

Tylko dziwne jest to że jak sprawdzam ten applet w netbeansie to dziala bez problemu w tej wersji i poprzedniej . Czy może ktoś testował tą bibliotekę (org-openide-util.jad) w zastosowaniu appletu bo juz sam nie wiem czemu nie chce to działać? :(

0

Niezależnie od tego czy testujesz lokalnie, czy na serwerze odczytanie pliku

c:/EdytApp/dist/pl/maxxio/img/north.gif

jest w aplecie niedozwolone (chociaż na windzie FF i IE czytają, Opera i appletviewer nie).
Aplety mają do czytania plików graficznych metodę getImage(...).
Spróbuj czytać tak:

Image img=getImage(getCodeBase(),adres_względny_w_stosunku_do_kodu_apletu);

Użytkownik komputera może "poluzować" zasady bezpieczeństwa dla apletów. Być może NetBeans wiedząc że uruchamiasz napisany przez siebie aplet "luzuje" w twoim imieniu. Przyjmij zasadę, że aplet jest dobrze napisany, gdy da się go uruchomić w IE, FF, Operze i SUN-owskim programie appletviewer.

0

Czyli można jednoznacznie powiedzieć że biblioteka org-openide-util.jad nie nadaje się do użycia w applecie! Myślałem, że podpisanie appletu pomoże ale się myliłem. To co napisałeś getImage testowałem już na początku i działało ale miałem nadzieje że do tego uda mi się stosować tą w/w bibliotekę. cóż ... Dzięki :)

0

Nie można! Można tylko powiedzieć, że w aplecie nie wolno użyć

Utilities.loadImage(...);

BTW, ściągnąłem bibliotekę, zdekompilowałem klasy Utilities i IconManager (bo Utilities.loadImage() z niej korzysta) i zdębiałem: krótka metoda (około 20 wierszy) ma 5 etykiet i jeszcze więcej instrukcji goto.

0

Jeszcze mam pytanko co do biblioteki VisualLibrary! Teraz jak testuję mój applet używam ActionFactory.createExtendedConnectAction(....); powoduje ona tworzenie graficznego połączenia dwóch elementów po wciśnięciu CTRL + L.p.m na obiekcie od ..do itd .

I tutaj problem gdy uruchomiłem applet w przeglądarce to lipka wciskam ctrl i staram się zrobić połączenie i nic .

Jest jeszcze inna funkcja ActionFactory.createConnectAction(...) ,która działa tak jak poprzednia tylko bez wciśnięcia CTRL. Wszystko byłoby pięknie tylko jak używamy wraz z tą funkcją createMoveAction(), która umożliwia przesuwanie obiektu po wciśnięciu i przytrzymaniu L.p.m na obiekt . I tutaj może działać tylko jedna opcja albo createConnectAction albo CreateMoveAction.

Moje pytanie czy może ktoś wie jak np. w funkcji createExtendedConnectAction zmienić aby reagowała na przycisk CTRL tylko np. prawy klawisz myszki wtedy wszystko byłoby ok. Taki mój pomysł może spotkaliście się z takim problemem w bib Visual Library i macie jakieś rozwiązanie Dzięki (jak ja nie lubię ograniczeń :) )

0

Sorrki chyba jestem zmęczony nie było tego postu wyżej :) Wszystko jest OK

1 użytkowników online, w tym zalogowanych: 0, gości: 1