Zaloguj się
Projekty Kategorie Archiwum

Funkcja DateFormatSymbols.getMonths() zwraca tablicę z nazwami miesięcy. Tablica ta, jak łatwo się domyślić, zawiera 13 miesięcy, gdzie dla większości lokalizacji/krajów ostatnia nazwa miesiąca jest pustym Stringiem...

Z kolei pole Calendar.MONTH, w przeciwieństwie do pola z dniem miesiąca, zaczyna się od zera (0=Styczeń, 1=Luty, etc.). Prawda, że proste.. Na szczeście w JDK 7 chyba już będzie nowe API do obsługi daty, które zastąpi (tu słowo kończące się na "ne") java.util.Date/Calendar :)

26 maja

JWebPane - "Swing compatible WebKit implementation"

To zupełnie nowy komponent bazujący na WebKit. David Qiao na swoim blogu napisał: "This is something Java/Swing community has been crying for years. (...) That’s a lightweighted Swing component for html viewing (or editing)." I wszystko jasne :)

Trochę więcej informacji można znaleźć w PDF-ie z tegoroczego JavaOne.

javax.swing.JLabel i inne

Czytaj dalej...

23 marca

Głupie pytanie! Napisałem to, żeby nauczyć się trochę Scene Graph. A ponieważ przypadkowo wpadło w ręce Phys2D, to połączyłem te dwa API.. Zasady są proste: układamy domek z klocków za pomocą myszy, a potem wszystko rozwalamy :P Dodatkowo można sterować grawitacją, bo kto powiedział, że musi spadać na dół? Przycisk "Reset" usuwa wszystkie klocki.

Uruchom (168KB)

Launch

Jest kilka drobnych błędów:

  • Przeciągnij-i-upuść czasami jest nieprzewidywalne
  • W zależności od komputera może działać za szybko lub za wolno, ale na razie nie chce mi się tego poprawiać ;)
  • Później umieszczę paczkę ze źródłami..

Update - v0.2 :)

  • Ładniejsze kolory
  • Dodana opcja pauzy
  • Sterowanie grawitacją za pomocą klawiszy strzałek
  • Opcjonalne efekty (raczej powolne i z błędami)
  • Teraz powinno też działać z Java 1.5
20 marca

W końcu JDK doczeka się nowego dema dla Swinga. Teraz wszystkie komponenty będą posegregowane według kategorii, co powinno ułatwić zabawę. Najciekawszą rzeczą jest funkcja "Highlight code to", która od razu wyświetla kod źródłowy dla wybranego elementu programu. Na przykład: Chcesz nauczyć się jak zrobić tabelkę przy użyciu JTable? Wystarczy parę kliknięć, Ctrl+C/V i gotowe ;)

Free Image Hosting at www.ImageShack.us

Przy okazji mogliby jeszcze zmienić licencje przykładowych programów, bo wspominanie o "nuclear facility" w aplecie "Kółko i krzyżyk" jest raczej dość zabawne :)

Update

Strona projektu: https://swingset3.dev.java.net/

3 marca

Zgodnie z obietnicą publikuję "df reloaded". Jest to prosty program, który wyświetla wolne/zajęte miejsce na dysku... Może komuś się przyda ;)

Uruchom

Jeśli otworzy się strona http://java.com, to znaczy że nie masz Javy 6, albo z jakiegoś tajemniczego powodu nie została wykryta :P Wtedy możesz spróbować uruchomić poprzez alternatywny launcher.

Screenshot

df

Techniczne

Czytaj dalej...

df

Kategoria Java | Ogólne
17 grudnia
import java.net.*;
import java.util.*;
public class Test {
	public static void main(String[] args) throws MalformedURLException {
		HashSet<URL> set = new HashSet<URL>();
		set.add(new URL("http://jogger.pl"));
		set.add(new URL("http://techblog.pl"));
		set.add(new URL("http://jogger.pl"));
		set.add(new URL("http://google.pl"));
		System.out.println(set.size());
	}
}

Jaką wartość wyświetli println na końcu programu? Jeśli myślisz że 4 lub 3, to się mylisz.. :)

Inne "ciekawostki" można obejrzeć na tej ponad godzinnej prezentacji: Advanced Topics in Programming Languages: Java Puzzlers

Generalnie można to podsumować krótko: Używaj FindBugs, żeby znaleźć wszystkie upierdliwe błędy, których normalnie byś nie zauważył :)

Parę dni temu ujawniono wielki sekret(tm). Chodzi nową i darmową (licencja LGPL) bibliotekę służącą do renderowania plików PDF - PDF Renderer. Pomimo tego, że sama biblioteka jest jeszcze w dość wczesnej (?) fazie rozwoju, to działa bardzo dobrze i szybko ;)

Więc jak użyć to API, żeby wyświetlić plik PDF w Swingu?

Czytaj dalej...

12 listopada

Makagiga 1.9.3 jak zawsze przynosi wiele poprawek, więc warto się uaktualnić :)

Pojawiły się również dwie nowe wtyczki: Logo Generator oraz "skórka" Substance 4.1. Pluginy można zainstalować poprzez menu Narzędzia -> Wtyczki -> Pobierz więcej wtyczek.

Generator logo, w porównaniu do starej wersji, zawiera trochę nowości:

  • Obsługa różnych stylów czcionki (pogrubienie, pochylenie itp.)
  • Możliwość zapisu przezroczystego PNG (bez tła)
  • Drukowanie loga
  • Kopiowanie obrazka do schowka
  • Eksport to HTML
  • Spolszczenie aka polskie napisy

BTW, Makagiga to aplikacja typu PIM + czytnik RSS + widgety.

Niedawno zmieniłem też stronę domową projektu. Nie dość, że wygląda trochę dziwnie, to na dodatek ma zielonego klona ;)

10 listopada
Free Image Hosting at www.ImageShack.us
26 lipca

Dzisiaj zrobiłem kolejny widget dla Makagigi 2 (może nawet zadziała pod Glossitope ;) Sposób użycia jest prosty: wybieramy obrazek/zdjęcie z dysku, oraz opcjonalnie ustawiamy kolor tła.

*

*) Obrazki autorstwa yipyop; kot znajomych :)

Jeśli wszystko pójdzie dobrze, to Makagiga 2.0 Beta 1 (aka 1.9 Beta) pojawi się już w tym tygodniu.

25 lipca

Dodanie obsługi OpenGL/3D za pomocą JOGL jest proste :) Wystarczy utworzyć obiekt GLCanvas, na którym wszystko jest rysowane, a następnie dodać GLEventListener. Z GLEventListener interesują nas głównie metody init, display i reshape.

  • init - wywoływane przy starcie programu

  • display - tutaj rysujemy naszego Dooma IV ;)

  • reshape - wywoływane przy starcie programu, oraz gdy zmieni się rozmiar okna

Przykładowy program

Free Image Hosting at www.ImageShack.us

Czytaj dalej...

Jak na razie cały kod odpowiedzialny za generowanie wykresu, został włączony do projektu Makagiga 2.0 (jako niezależna biblioteka), i obecnie służy do wyświetlania różnorakich statystyk w programie.

Wiem, wiem, wersja cywilna generatora miała być już jakieś pół roku temu, ale jak zwykle występują opóźnienia (podobnie jak z DNF). Na szczęście projekt żyje i nadal się rozwija, więc nie ma się czym martwić :)

[javac] Compiling 512 source files...

Przy okazji pokażę jak wyglądają nowe widgety z projektu Glossitope (dawniej AB5k), uruchomione pod Makagigą 2.0:

Free Image Hosting at www.ImageShack.us

Krótka, zabawna prezentacja Glossitope (video i PDF) na blogu autora :)

13 maja

Ktoś przygotował ładną grafikę, ale chyba zapomniał wyłączyć sprawdzanie pisowni..

A o samym JavaFX pewnie jeszcze napiszę, bo warto :)

Kategoria Java | Ogólne
18 marca

Na podstawie projektu Jake 2, utworzyłem nowy komponent JQuake2Panel. JQuake2Panel to po prostu zwykły JPanel z grą "w środku". Taki komponent można łatwo umieścić w dowolnym miejscu okna (np. w JToolBar, jak widać na screenshocie). Można normalnie grać, tylko obsługa myszy jakoś przestała działać ;-)

Free Image Hosting at www.ImageShack.us

Czytaj dalej...

14 marca

Prawie miesiąc temu napisałem, że "Makagiga 1.2 pojawi się najpewniej w tym tygodniu", no i zgodnie z obietnicą, jest w tym tygodniu ;) W stosunku do poprzedniego wydania lista zmian nie jest imponująca, jednak warto zrobić upgrade, ponieważ diabeł tkwi w szczegółach :)

Obecnie gałąź 1.x nie jest już rozwijana (będą tylko poprawki do 1.2.x). Ale nie ma się czym martwić, ponieważ od kilku tygodni trwają intensywne prace nad wersją 2.0 (codename Skyfish)...

Dzisiaj zrobiłem wtyczkę do obsługi widgetów AB5k. Na razie w wersji alpha, ale jakoś działa :) (Color Chooser - z prawej strony)

Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us

3 marca

Update: Zobacz też Projekt xswingx

Wyobraźmy sobie, że mamy JPanel, na którym znajdule się pole tekstowe i przycisk (obrazek 1). Nie wygląda to zbyt ładnie :-)

before

Na drugim screenshocie jest już znacznie lepiej. Ale jak wstawić przycisk do pola tekstowego?

after

Czytaj dalej...

Wygląd zapewniony dzięki Substance Java look & feel, z różnymi ustawieniami i schematami kolorów.

Free Image Hosting at www.ImageShack.us

Czytaj dalej...

7 lutego

Tym razem nowa wersja wyszła niespodziewanie szybko (sam jestem zaskoczony). Oto skrócona lista zmian:

Czytaj dalej...

16 stycznia

Riddle zrobił u siebie ciekawe obrazki ze statystykami. To mnie zainspirowało do nauczenia się czegoś nowego i napisania w Javie prostego generatora wykresów :)

Wersja 0.0.1 wygląda już całkiem nieźle. Kolory są nieco blade i brakuje "połysku", ale na pewno da się to jakoś poprawić. Z lewej strony okna jest JTable z modelem danych, na podstawie których rysowany jest cały wykres... Więcej szczegółów oraz uruchamialny program do zabawy już wkrótce :)

chart_003

Edit: nowy screenshot

Kategoria Java | Ogólne
23 grudnia

Wersja 1.0 jest już faktem autentycznym ;-)

Todo

Wtyczki

Powstała specjalna strona z wtyczkami. Jak widać wymaga jeszcze dopracowania (brakuje wyszukiwarki, jakiegoś sortowania, itp.), ale na początek wystarczy...

SDK

SDK to zestaw narzędzi pomocnych w tworzeniu nowych wtyczek do Makagigi. Po uruchomieniu "./start.sh", wyświetli się okno, z którego można utworzyć nowy projekt. Wystarczy podać typ wtyczki (widget, szukanie w internecie, itp.), preferowany język programowania (Java lub JavaScript) oraz nazwę. Następnie, po przejściu do katalogu z nowym projektem, należy uruchomić "ant test". Reszta opisu w pliku README.txt :-)

11 grudnia

Pojawiła się Java 6, czyli teraz w końcu mogę wydać wersję 1.0 Makagigi :) Muszę tylko zaczekać na niemieckie tłumaczenie programu, oraz dokończyć SDK, co potrwa z tydzień lub dwa ;)

26 listopada

Przed chwilą napisałem sobie fajną wtyczkę do Makagigi. Wtyczka umieszcza przycisk "Wyślij" w edytorze tekstu. Wciśnięcie przycisku, powoduje dodanie nowego wpisu (przy użyciu Bota, DCOP i Kopete). Jako tytuł używana jest nazwa pliku...

Send

PS. Dzięki nowemu SDK, całość programu pisałem około 3 minut... :-)

Kategoria Java | Makagiga | WWW
18 listopada

Kolejna wersja jak zwykle przynosi trochę nowości i poprawek:

  • Opcja pobierania kanałów RSS przy starcie aplikacji
  • Opcja automagicznego pobierania wszystkich kanałów RSS co pewien czas
  • Teraz każdemu artykułowi z kanału Atom/RSS można przyporządkować tagi, kolor, ikonę, kolor lub ocenę
  • Funkcja zmiany rozmiaru obrazka
  • Lepsze podsumowanie zadań
  • Ulepszony pełnoekranowy "tryb prezentacji" (Ctrl+Shift+P)
  • Ikona tacki systemowej jest tymczasowo wyłączona pod KDE, ze względu na bug w Javie :(
  • Dużo mniejszych poprawek i ulepszeń

Na screenshocie wtyczka czytnika kanałów z jakimś fajnym blogiem...

Free Image Hosting at www.ImageShack.us

PS. To już ostatnia Beta. Wersja z SVN ma już magiczny numer wersji "1.0" :-)

Free Image Hosting at www.ImageShack.us

16 listopada

Standardowo teksty podpowiedzi (tool tip text) w Javie/Swingu wyglądają tak:

before

Jednak większość użytkowników jest przyzwyczajona do nieco innych kolorów. Żeby ustawić "standardowy" wygląd, wystarczy zmienić wartość kilku domyślnych parametrów "look and feel" ("Inactive" zmienia kolor dla wyłączonych komponentów).

// kolor tła
ColorUIResource background = new ColorUIResource(0xffffdc);
defaults.put("ToolTip.background", background);
defaults.put("ToolTip.backgroundInactive", background);

// kolor tekstu
ColorUIResource foreground = new ColorUIResource(Color.BLACK);
defaults.put("ToolTip.foreground", foreground);
defaults.put("ToolTip.foregroundInactive", foreground);

// ramka
Border border = BorderUIResource.getBlackLineBorderUIResource();
defaults.put("ToolTip.border", border);
defaults.put("ToolTip.borderInactive", border);

// tu tworzysz okno, itd...

after

PS. Jak Wam się podoba pingwinek na viścianych dekoracjach okna? ;-)

Kategoria Java | Ogólne
17 października

Biblioteka SwingX ma m.in. fajną klasę, służącą do wyświetlania cieni "pod" komponentami.

Użycie jest bardzo proste, a efekt końcowy dość ciekawy:

JPanel p = new JPanel();
...
p.setBorder(new org.jdesktop.swingx.border.DropShadowBorder());
Cienie
Kategoria Java | Ogólne
16 października

Free Image Hosting at www.ImageShack.us

W końcu dodałem brakującą funkcję skalowania obrazu, która pojawi się w następnej wersji 0.9.6 :) Kiedyś zrobię jeszcze możliwość podawania wartości w procentach oraz "batch processing", czyli zmianę rozmiaru wielu plików za jednym razem.

Ostatnio zapomniałem (czyt. nie-chciało-mi-się) napisać o tym, co nowego w wersji 0.9.4 i najnowszej 0.9.5, ale zrobię to wkrótce..

No to teraz chyba przestanę używać Digikam ;)

1 października

Oto funkcja tworząca przycisk, który wyświetla bieżące zużycie pamięci (heap) przez uruchomioną aplikację. Wciśnięcie przycisku uruchamia garbage collector. Prosta rzecz, a znacznie ułatwia śledzenie wycieków pamięci ;-)

public static JButton createMemoryPanel() {
    final JButton button = new JButton();
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.gc();
        }
    } );
    button.setToolTipText("GC");
    new Timer(2000, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            MemoryMXBean memory = ManagementFactory.getMemoryMXBean();
            long heap = memory.getHeapMemoryUsage().getUsed();
            button.setText(String.format("%1.2f M", (float)heap / 1048576));
            Timer.class.cast(e.getSource()).restart();
        }
    } ).start();

    return button;
}
Kategoria Java | Ogólne
< Wcześniejsze wpisy
Nowsze wpisy >

Kategorie

Ewolucja Internetu 8 | Fail 40 | Gry 46 | Humor 129 | Idiotyzm 50 | Java 110 | KDE 85 | KShutDown 22 | Linux 84 | Makagiga 58 Muzeum 3 | Ogólne 819 | Polityka 76 | Programowanie 51 | Reklamy 4 | Techblog 19 | Teorie Spiskowe 12 | TV 59 | UI 9 | Użyteczność 30 | WWW 90 | Wyrwane z Kontekstu 34 | X Files 14

Archiwum

Maj 2012 | Kwiecień 2012 | Marzec 2012 | Luty 2012 | Styczeń 2012 | Grudzień 2011 | Listopad 2011 | Październik 2011 | Wrzesień 2011 | Sierpień 2011 | Lipiec 2011 | Czerwiec 2011 | Maj 2011 | Kwiecień 2011 | Styczeń 2011 | Listopad 2010 | Październik 2010 | Wrzesień 2010 | Sierpień 2010 | Lipiec 2010 | Czerwiec 2010 | Kwiecień 2010 | Marzec 2010 | Luty 2010 | Styczeń 2010 | Grudzień 2009 | Listopad 2009 | Październik 2009 | Wrzesień 2009 | Sierpień 2009 | Lipiec 2009 | Czerwiec 2009 | Maj 2009 | Kwiecień 2009 | Marzec 2009 | Styczeń 2009 | Grudzień 2008 | Listopad 2008 | Październik 2008 | Wrzesień 2008 | Sierpień 2008 | Lipiec 2008 | Czerwiec 2008 | Maj 2008 | Kwiecień 2008 | Marzec 2008 | Luty 2008 | Styczeń 2008 | Grudzień 2007 | Listopad 2007 | Październik 2007 | Wrzesień 2007 | Sierpień 2007 | Lipiec 2007 | Czerwiec 2007 | Maj 2007 | Kwiecień 2007 | Marzec 2007 | Luty 2007 | Styczeń 2007 | Grudzień 2006 | Listopad 2006 | Październik 2006 | Wrzesień 2006 | Sierpień 2006 | Lipiec 2006 | Czerwiec 2006 | Maj 2006 | Kwiecień 2006 | Marzec 2006 | Luty 2006 | Styczeń 2006 | Grudzień 2005 | Listopad 2005 | Październik 2005 | Wrzesień 2005 | Sierpień 2005 | Lipiec 2005 | Czerwiec 2005 | Maj 2005 | Kwiecień 2005 | Marzec 2005 | Luty 2005 | Styczeń 2005