28 maja
20:13 2005
Czyli co nowego w Java 6.0 (Mustang)?
Zamiast pisać...
Począwszy od wersji 6.0 nie trzeba będzie już zgadywać ani przypominać sobie, jak nazywają się standardowe czcionki Java:
W wersji 1.6.0-ea-b38 (czyli najnowszy snapshot) istnieją wbudowane klasy do obsługi tacki systemowej:
Linuksowy RPM dostał też "default java", czyli wpisujesz "java" i działa (bez ustawiania zmiennej PATH i innych kombinacji).
Zmian, poprawionych błędów i nowych funcji jest oczywiście dużo więcej, ale akurat to najbardziej rzuciło mi się w oczy :) Należy również pamiętać, że sama Java 6.0 jest jeszcze w fazie tworzenia...
Zamiast pisać...
if (String.length() == 0) { // foo }...można użyć nowej funkcji
String.isEmpty:
if (String.isEmpty()) { // foo }
Począwszy od wersji 6.0 nie trzeba będzie już zgadywać ani przypominać sobie, jak nazywają się standardowe czcionki Java:
new Font("Monospace", Font.PLAIN, 12) ? new Font("Monospaced", Font.PLAIN, 12) ? A może new Font("Mono space", Font.PLAIN, 12) ? Niedługo będzie można napisać tak: new Font(Font.MONOSPACED, Font.PLAIN, 12) Prawda, że proste? ;)
W wersji 1.6.0-ea-b38 (czyli najnowszy snapshot) istnieją wbudowane klasy do obsługi tacki systemowej:
java.awt.SystemTray oraz java.awt.TrayIcon. Przetestowałem to pod KDE i nawet działa :)Linuksowy RPM dostał też "default java", czyli wpisujesz "java" i działa (bez ustawiania zmiennej PATH i innych kombinacji).
JTabbedPane ma teraz możliwość użycia dowolnego komponentu jako "tytuł" danego "taba". Dzięki temu można np. dodać przyciski zamykania jak w Operze 8.0.Zmian, poprawionych błędów i nowych funcji jest oczywiście dużo więcej, ale akurat to najbardziej rzuciło mi się w oczy :) Należy również pamiętać, że sama Java 6.0 jest jeszcze w fazie tworzenia...
Proszę o komentarz
Ciekawo czy poprawili obsługę gfx działającą w trybie XWindowToolkit, bo w tym trybie źle są obsługiwane zdarzenia myszki :(
Och, to może Ty mi pomożesz, skoro hackujesz Jave ;-)
na pl.comp.lang.java nie było odzewu...
W klasie odpowiedzialnej za nasluch klawiatury mam:
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_LEFT)
gra.obrotWLewo();
if(e.getKeyCode() == KeyEvent.VK_RIGHT)
gra.obrotWPrawo();
zrodlo.repaint();
}
W glownej klasie (dziedziczacej po JApplet) tworze obiekt klasy odpowiedzialnej za nasluch klawiatury i dodaje go przez addKeyListener();
I teraz tak:
pod Windows, wszystko dzia,
pod Linuksem niet.
Java ponoc jest przenosna, wiec ja tym bardziej zdziwiony, bo nigdy z nia problemow nie mialem. ;-)
Nie reaguje na wciskanie klawiszy?
Nie wiem, może to wina przeglądarki. Zobacz czy działa pod "appletviewer".
E, nawet jesli odpalam to jako aplikacja, to tez nie działa :/
Obszedlem to przez zrobienie buttonow, ale klikanie zastepujace wszsytkie ,,ruchy'' to raczej kiepskie rozwiazanie
testowałem AWT zarówno bazujące na XToolkit jak i MToolkit
(Java 5) - JFrame "łapał" klawisze pod Linuksem. Jesteś pewien, że dany element miał focus i zdarzenia były kierowane do niego.
Huh, ja tam w Javie stawiam pierwsze kroki dopiero.
Masz jakis cookbook do ustawienia tego focusa?
I w takim razie, na czym polega roznica, ze pod ta sama wersja JVM na Widows dzia, a na Linuksie nie? Czyzby chodzilo o inna obsluge zdarzen przez X serwer?
Na początek o samej Jawie to np. 2 ksiażki z Helionu - Java Core (Podstawy i Techniki Zaawansowane)
Z tego samego wydawnictwa "Java. Tworzenie gier" - trochę ciekawostek jak pisać coś takiego jak gry pod zwykła Jawą.
Do tej książki (J.TG) na ftpie (ftp://ftp.helion.pl/przyklady/javtwg.zip) są przykłady, szczególnie polecam programy z rozdziału 3 (KeyTest).
Wielkie dzięki Arghil.
Póki co mam za sobą fragmenty Thinking in Java, z checia przyjrze sie wymienionym przez Ciebie książkom :)
Jeszcze można takie coś dodać gdzieś w główniej klasie
Toolkit.getDefaultToolkit().addAWTEventListener(
new AWTEventListener(){
public void eventDispatched(AWTEvent event){
System.out.println(event);
}
}, -1);
i po prostu zobaczyć co przejmuje obsługę klawiszy
aha najlepiej jest zawęzić drukowanie do odpowiednich zdarzeń np.
if (event instanceof java.awt.event.KeyEvent) System.out....
Co do książek to niestety są trochę drogie :( aa i uważaj, które wydanie kupujesz (najnowsze opisuje to co przyszło z wersją 5 Jawy).
Trochę informacji można też znaleźć na http://java.sun.com no i oczywiście za pomocą googla ;)
super
super