我正在編寫自己的Java GUI組件,它將擴展javax.swing.JComponent
並使用其#paint(Graphics)
方法使用java.awt.Graphics#drawString(String, int, int)
方法在其本身上繪製文本。我不知道用戶的語言是否使用RTL或LTR文本,但我確實希望在恰當的時候將文本置於組件的左側或右側。 如何獲取文本的方向,以便我知道在哪裏繪製字符串?如何在Java中檢測當前用戶的文本方向首選項?
該項目的目標的Java 8
我正在編寫自己的Java GUI組件,它將擴展javax.swing.JComponent
並使用其#paint(Graphics)
方法使用java.awt.Graphics#drawString(String, int, int)
方法在其本身上繪製文本。我不知道用戶的語言是否使用RTL或LTR文本,但我確實希望在恰當的時候將文本置於組件的左側或右側。 如何獲取文本的方向,以便我知道在哪裏繪製字符串?如何在Java中檢測當前用戶的文本方向首選項?
該項目的目標的Java 8
類java.text.Bidi
提供方法來檢查,如果文本是完全左到右,從右到左或混合。靜態方法
Bidi.requiresBidi(char[] text, int start, int limit)
回報true
左到右和false
從右到左或混合內容。如果你可以確保你的內容不混合,靜態方法就足夠了。否則,您必須實例化一個Bidi對象以檢索有關您的文本的詳細信息。
這不會回答問題(如何找到用戶的雙向偏好......如果有意義的話)或他想問的問題(如何找到用戶對文本對齊和填充的偏好)。 – 2015-02-09 12:29:29
這是/這應該是一個用戶偏好?它不應該取決於您要呈現的文字的語言嗎? – 2015-02-09 03:31:47
@StephenC是的,它應該。這就是說,我所知道的是他們是否希望文本通常對齊(例如英文左移),居中,對齊或對齊(例如英文右) – Supuhstar 2015-02-09 11:33:34
呃......在傳統術語中,LTR與RTL渲染不關於對齊。它是關於字符顯示順序的;例如http://unicode.org/reports/tr9/。例如,在阿拉伯語中,一個單詞中的第一個字符在第二個單詞的右側。 – 2015-02-09 11:47:14