Polstertext mit lateinischen und fremden Charakteren JavaJava

Java-Forum
Anonymous
 Polstertext mit lateinischen und fremden Charakteren Java

Post by Anonymous »

Ich habe eine abgrenzende Datei, die ein Schmerz zum Lesen sein kann. Daher habe ich eine Swing -Anwendung, die den Inhalt der Dateien aufnimmt und sie in eine jTextArea steckt. Japanische und koreanische Charaktere können mehr Länge als ein lateinisches Einsatz haben, sodass ich FontrenderContext verwendet habe, um dabei zu helfen. Ich habe versucht, Charakter zu verwenden. Unicodeblock für die verschiedenen Sprachen, aber das hat nicht funktioniert. Diese Methoden haben mich nahe gebracht. Wenn die japanische Saite die längste von dem Haufen war, die es funktioniert hat, aber wenn dies nicht der Fall ist, wird sie 2 Leerzeichen länger als erledigt als es sollte. < /P>

Code: Select all

  public static int getDisplayWidth(String text, Font font) {
FontMetrics metrics = new JLabel().getFontMetrics(font);
int width = 0;
int spaceWidth = metrics.charWidth(' ');// Get width of a monospaced space
FontRenderContext frc = new FontRenderContext(null, true, true);

for (char c : text.toCharArray()) {
TextLayout layout = new TextLayout(String.valueOf(c), font, frc);
double charWidth = layout.getBounds().getWidth();

//this is close
if (charWidth > spaceWidth) {
width += Math.max(1, (int) Math.round(charWidth / (double) spaceWidth));
} else {
width += 1; // Treat half-width and Latin characters as taking 1 space
}
}
return width ;
}

private static String padToWidth(String text, int width) {
//int textWidth = getDisplayWidth(text);
int textWidth = getDisplayWidth(text,new Font("Monospaced",Font.PLAIN,20));
int padding = width - textWidth;
return text + " ".repeat(Math.max(0, padding));
}
< /code>
Ich war ziemlich verblüfft darüber, was die Polsterung nicht korrekt macht. Ich kann den gesamten Code und meine Beispieldaten auch bei Bedarf teilen. Ich wollte den Beitrag nur nicht überfluten. < /P>
Bearbeiten: Beispieldaten < /p>
asdasdasdasdasd|a||0|
qweas|aa|||
end|aaaa||平仮名 ひらがな|
filler|zz||qweas|
!|idk||pen|
@|names||ANYthing that is not pencils|
ㄱ넣튜ㅓ,ㅣㅎㅌ|korean|||
Ganze Codebasis bei Bedarf: https://sourceb.in/mxsslwpfbx

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post