Zeigt ein Unicode-Zeichen auf JButton an

Lesezeit: 2 Minuten

Benutzer-Avatar
JESierra

Ich versuche, diesen Unicode anzuzeigen "\uD83D" auf einen JButton Text, aber wenn ich kompiliere, zeigt es nur das Quadrat eines unbekannten Zeichens.

  • Ändern Sie die Schriftart in eine Schriftart, die Unicode-Zeichen unterstützt

    – Verrückter Programmierer

    19. Februar 2017 um 22:46 Uhr

  • Ein einzelner Ersatzcharakter wie '\uD83D' ist immer illegal. Nur ein Ersatz Paar macht Sinn.

    – Thomas Fritsch

    19. Februar 2017 um 23:11 Uhr

Benutzer-Avatar
Andreas Thompson

Thomas hat eine gute Antwort gegeben, aber beachten Sie, dass wir, um nicht zu erraten, welche installierten Schriftarten ein Zeichen oder eine Zeichenfolge unterstützen, die verfügbaren Schriftarten iterieren und jede mit der überprüfen können canDisplayUpTo überladene Methoden von Font:

Z.B

import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class FontCheck {

    public static void main(String[] args) {
        String s = "\u4E33";
        Font[] fonts = GraphicsEnvironment.
                getLocalGraphicsEnvironment().getAllFonts();
        System.out.println("Total fonts: \t" + fonts.length);
        int count = 0;
        for (Font font : fonts) {
            if (font.canDisplayUpTo(s) < 0) {
                count++;
                System.out.println(font.getName());
            }
        }
        System.out.println("Compatible fonts: \t" + count);
    }
}

Ausgabe:

Total fonts:    391
Arial Unicode MS
Dialog.bold
Dialog.bolditalic
Dialog.italic
Dialog.plain
DialogInput.bold
DialogInput.bolditalic
DialogInput.italic
DialogInput.plain
Microsoft JhengHei
Microsoft JhengHei Bold
Microsoft JhengHei Light
Microsoft JhengHei UI
Microsoft JhengHei UI Bold
Microsoft JhengHei UI Light
Microsoft YaHei
Microsoft YaHei Bold
Microsoft YaHei Light
Microsoft YaHei UI
Microsoft YaHei UI Bold
Microsoft YaHei UI Light
Monospaced.bold
Monospaced.bolditalic
Monospaced.italic
Monospaced.plain
NSimSun
SansSerif.bold
SansSerif.bolditalic
SansSerif.italic
SansSerif.plain
Serif.bold
Serif.bolditalic
Serif.italic
Serif.plain
SimSun
Compatible fonts:   35

Benutzer-Avatar
Thomas Fritsch

Sie müssen eine Schriftart festlegen, die die gewünschten Unicode-Zeichen unterstützt.
Das folgende Beispiel stützt sich auf Code2000.ttf auf meinem System installiert.

public static void main(String[] args) throws Exception {
    SwingUtilities.invokeLater(() -> {
        JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton button = new JButton("\u4E33");
        Font font = new Font("Code2000", Font.PLAIN, 36);
        button.setFont(font);
        frame.add(button);
        frame.pack();
        frame.setVisible(true);           
    });
}

Chinesischer Knopf

Wenn Sie verwenden Ersatzfiguren
(im Bereich D800–DFFF) müssen Sie ein hohes und niedriges Ersatzpaar verwenden. Und seien Sie sich bewusst, dass dieses Paar einen Unicode-Punkt dahinter darstellt \uFFFF.

Ein Ersatzpaar bezeichnet den Codepunkt
1000016 + (H-D80016) × 40016 + (L − DC0016)
wobei H und L die numerischen Werte der hohen bzw. niedrigen Ersatzwerte sind.

Ein ungepaartes Ersatzzeichen in einer Zeichenfolge (wie in der ursprünglichen Frage) ist ungültig und wird als gerendert Unbekannt.

1014200cookie-checkZeigt ein Unicode-Zeichen auf JButton an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy