Polskie znaki w Swingu - prosty sposób

0

Jak w prosty sposób zrobić "coś" aby zawsze mieć polskie znaki w Swingowych okienkach? Np. Piszę pod linuksem program w swingu, pod linuksem mam polskie znaki. Ten sam program ma działać pod windowsem (i działa) ale polskie znaki wyglądają mniej więcej tak:

pl.pngzrzut_ekranu19.png

Jakoś specjalnie w Javie nigdy się nie bawiłem, ale chciałbym zapytać, czy istnieje jakiś prosty sposób na wyświetlanie polskich znaków w swingu, niezależnie od OSa?

0

Ustaw kodowanie na jakieś UTF-8?

0

Jeśli chodzi o kodowanie pliku, to plik jest zapisany w UTF8. Piszę w Netbeansie. A jakoś w kodzie można coś ustawić?

0

Nikt nie wie?

0

Zrób jakiś przykładowy projekt, w którym objawia się błąd i podrzuć go na forum. Nikt nie jest wróżką i nie będzie wróżył z fusów. Poza tym podaj swoją konfigurację, tzn dokładne wersje Javy przynajmniej.

0

OK, na Ubuntu mam:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)

Na Windowsie mam:

java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) Client VM (build 23.5-b02, mixed mode, sharing)

Projekt z polskimi znakami:

http://www28.zippyshare.com/v/10299673/file.html

Na ubuntu uzywam Netbeansa 7. Na windowsie próbowałem kompilować za pomocą javac */java i dostałem:

C:\Temp\Test_PL\src\test_pl>javac *.java
NewJDialog.java error: unmappable character for encoding Cp1250
jButton1.setText("++-+++-+ +++?+?++?");
^
NewJDialog.java error: unmappable character for encoding Cp1250
jButton1.setText("++-+++-+ +++?+?++?");
^
NewJDialog.java error: unmappable character for encoding Cp1250
jButton1.setText("++-+++-+ +++?+?++?");
^
NewJDialog.java error: unmappable character for encoding Cp1250
jButton2.setText("++-+++-++ +++?+?++?");
^
NewJDialog.java error: unmappable character for encoding Cp1250
jButton2.setText("++-+++-++ +++?+?++?");
^
NewJDialog.java error: unmappable character for encoding Cp1250
jButton2.setText("++-+++-++ +++?+?++?");
^
6 errors

0

jeszcze dodam, że nie chodzi mi o samo uruchomienie na Windowsie, ale chciałbym miec możliwość kompilacji plików na Windowsie i potem również ich uruchomienia z polskimi znakami

0

Doraźnie pomogło dodanie java -encoding UTF-8 plik.java, ale nie wiem, czy będzie to działać na wszystkich systemach. Program ma być 100% przenośny Windows/Linuks, a tu takie kwiatki już na początku :( Może coś w Netbeansie muszę ustawić, czy jak?

0

No to skompiluj na Windowsie za pomocą NetBeansa i zobacz co się stanie.

Edit:
Zresztą po co kompilujesz na Windowsie osobno? Przecież wystarczy odpalić plik .jar i po zawodach. Weź skopiuj katalog dist z projektu (ten katalog jest tworzony przez NetBeansa) na Windowsa i odpal potem na Windowsie program.

PS:
Podesłany program kompiluje się OK w NetBeansie pod Windowsem i OK działa.

0

może nie wyraziłem się jasno. piszę TYLKO formatki w Netbeansie, a potem ręcznie tworzę projekty (katalogi package) bez "zbędnych" src, build itd, czyli nie jest to projekt Netbeans tak całkowicie. Gotowe pakiety kompiluję za pomocą javac i używam Makefili do tego. Chciałbym umożliwić kompilację bez niepotrzebnej instalacji Netbeansa.

A może orientujesz się, jak zrobić z kilku (ok 4) pakietów jara? dodam, że pakiety są na róznych "wysokościach" w drzewie katalogów programu i "mocuję" się z utworzeniem jednego jara ;) Netbeansa wolałbym nie używać do tego (ew "pisanie" formatek) a poza tym, tylko kompilacja ręczna wchodzi w grę.

0

Powiedzmy że ogarnąłem jak się buduje jara (google), ale mam problem.

  • tu jestem, tu mam minifest.fm
    • MainDir (tu mam MainApp.class)
    • dir1
    • dir1a
    • dir1b
    • dir1c
      • dir2 (pliki *.class i obrazki, obrazki luźno razem z plikami *.class w kat dir2)

daję komendę:

jar cvmf manifest.mf MainApp.jar MainDir/.class dir1/dir1a/.class dir1/dir1b/.class dir1/dir1c/.class dir2/*.class dir2

i dostaję błąd uruchamiając

java -jar MainApp.jar

a to błąd:

Exception in thread "main" java.lang.NoClassDefFoundError: MainApp
Caused by: java.lang.ClassNotFoundException: MainApp
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: MainApp. Program will exit.

Mój manifest.mf wygląda tak:

Manifest-Version: 1.0
Main-Class: MainApp

gdzie MainApp jest w katalogu niżej od miejsca, gdzie jestem, w MainDir.

Co robię źle?

0

PRóbowałem już:

Manifest-Version: 1.0
Main-Class: MainDir.MainApp

Ze skutkiem takim:

$ java -jar MainApp.jar Exception in thread "main" java.lang.NoClassDefFoundError: MainDir/MainApp (wrong name: MainApp)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: MainDir.MainApp. Program will exit.

0

Dobra, jar zrobiony :D polecenia są ok, ale brakowało mi deklaracji 'package' w pliku MainApp.java -.- "

Jednak pozostaje problem polskich znaków. Jeśli stworzę jara na Ubuntu, a użytkownikowi podam tylko tego jara, na Windows, to tam już będą polskie znaki? Zaraz sprawdzę, ale chcę się jeszcze upewnić ;)

0

Po jaką cholerę kompilujesz to ręcznie? Żadnych makefile nie rób, nikt tego nie robi. Używa się Anta, Mavena lub podobnych rozwiązań. Projekty NetBeansowe są oparte na Ancie, w każdym katalogu masz plik build.xml, a w katalogu nbproject kolejne pliki potrzebne do zbudowania projektu. Wystarczy sam Ant, nawet bez żadnego IDE. Instalujesz Ant, wchodzisz do katalogu z projektem, odpalasz Anta i cieszysz się skompilowanym projektem.

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