Swing Kanji im JTestArea

Enigma228

Bekanntes Mitglied
Hallo Leute..

Ich habe ein Programm geschrieben in dem ich die Unicodes von Hiraganas, Katakanas und Kanjis umwandeln und in einem TextArea darstellen kann. Hiraganas und Katakanas funktionieren perfekt.. aber Kanjis bringt er nur das "Viereck".. ich habe mal ein wenig gegooglet und bin darüber gestolpert..

Java:
Object fontDefinition = new UIDefaults.ProxyLazyValue("javax.swing.plaf.FontUIResource", null, new Object[] { "dialog", new Integer(Font.PLAIN), new Integer(12) });

java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
    Object key = keys.nextElement();
    Object value = UIManager.get(key);
    if (value instanceof javax.swing.plaf.FontUIResource) {
        UIManager.put(key, fontDefinition);
    }
}
Quelle: java - How to display japanese characters in JTextArea - Stack Overflow

Es hat einen Tag lang funktioniert und dann war wieder Sense..
ich habe daraufhin mal einen alten Testcode modifiziert so das das Problem mal getestet werden konnte. Auch dort war keine Darstellung mehr möglich... diesmal aber von Anfang an..

Wo könnte mein Fehler liegen??


BeispielCode:
Java:
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import java.nio.charset.*;

public class MainFrame {

	JFrame frame;
	JLabel eins, zwei;
	static JTextArea ta1;
	
	public static void main(String[] args) {
		//Schedule a job for the event-dispatching thread:
                //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
            	createAndShowGUI();
            }
        });

	}
	
	public static void createAndShowGUI() {
		
		Font f = new Font("SansSerif",Font.BOLD, 35);
		JFrame frame = new JFrame("Unicode");
		JLabel zwei;

		Object fontDefinition = new UIDefaults.ProxyLazyValue("javax.swing.plaf.FontUIResource", null, new Object[] { "dialog", new Integer(Font.PLAIN), new Integer(12) });

		java.util.Enumeration keys = UIManager.getDefaults().keys();
		while (keys.hasMoreElements()) {
		    Object key = keys.nextElement();
		    Object value = UIManager.get(key);
		    if (value instanceof javax.swing.plaf.FontUIResource) {
		        UIManager.put(key, fontDefinition);
		    }
		}
				
		frame.setLayout(new GridLayout(2, 1));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setSize(200, 200);
		ta1 = new JTextArea();
		ta1.setText("\u2F71"); // Kanji
		ta1.setSize(80, 30);
		//ta1.setFont(f);
		ta1.setBorder(BorderFactory.createEtchedBorder());
		frame.add(ta1);
		String temp = "\u3042"; // Hiragana
		zwei = new JLabel();
		zwei.setSize(80, 30);
		zwei.setFont(f);
		zwei.setOpaque(true);
		zwei.setBorder(BorderFactory.createEtchedBorder());
		zwei.setBackground(Color.WHITE);
		zwei.setText(temp);
		frame.add(zwei);
	}
}
 

Lumaraf

Bekanntes Mitglied
Hab den Code mal getestet und ein paar Kanjis direkt eingegeben die mir so in den Sinn gekommen sind. Das funktioniert ohne Probleme, aber das Zeichen \u2F71 wird mir auch nicht angezeigt. So wie es aussieht bist du in Unicode bei den falschen Zeichen gelandet. Die im Japanischen verwendeten Kanjis müßten die in dieser Tabelle sein.
 

Neue Themen


Oben