2013-07-30 61 views
0
private JTextField resultTextField = new JTextField("0"); 
resultTextField.setFont(textFieldFont); 
     resultTextField.setBounds(COMMON_X, COMMON_Y, 180, 50); 
     resultTextField.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     add(resultTextField); 

我已經創建了JTextField,如上所述。我的應用程序由數字按鈕和'。'組成。當我點擊數字按鈕時,他們會得到正確的附加信息(例如,在5次點擊後「5」,然後點擊2次時「52」)。但點擊'。'按鈕預期結果是「5.」但顯示爲「.5」,然後點擊「2」,顯示「5.2」。 我哪裏可能會出錯?當組件的對齊方式爲「RIGHT_TO_LEFT」時串錯誤行爲

+0

SSCCE的完美案例 - 我建議你做一個。 – arcy

回答

1

我猜(從標籤),你正在編寫某種類型的計算器和要實現右對齊文字,而不是從右到左面向文本。 從右到左的方向用於例如阿拉伯語,從右向左書寫(你猜對了),而不是從左向右寫的「西方」方式。

我建議你刪除applyComponentOrientation()而不是看setHorizontalAlignment。 PS:就是說,我不能說真的是爲什麼'5'+'。'是'.5',但'5'+'。'+'2'顯示爲'5.2'。

+0

謝謝。它解決了我的問題,但上述問題依然存在。 – Daanish

1

我了濃厚的興趣,併產生了以下SSCCE:

import java.awt.ComponentOrientation; 

import javax.swing.JFrame; 
import javax.swing.JTextField; 


public class BasicFrame extends JFrame 
{ 
    public static void main(String[] args) 
    { 
     BasicFrame frame = new BasicFrame(); 
     frame.go(); 
    } 

    private void go() 
    { 
     JTextField resultTextField = new JTextField("0"); 
     resultTextField.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     add(resultTextField); 
     pack(); 
     setVisible(true); 
    } 

} 

所以現在我有同樣的問題:如果我清除該字段,然後輸入「123」,則顯示爲「123」;當我點擊週期鍵(他們中的任何一個)時,字段會顯示「.123」;如果我然後輸入「abc」,則字段顯示「123.abc」;當我輸入'a'時,句點跳到顯示的字符串的右側。這不符合我的前任老闆所謂的「最少驚訝的原則」......

+1

它表現出與其他標點符號相同的行爲 - 逗號,感嘆號等。 – arcy

+1

好的,在一個(非常短的)Google會話結束後,我認爲它與阿拉伯數字*有關,從左到右閱讀,而文本是從右到左。即「15天」從右到左應打印爲「syad 15」(至少這是我所猜測的)。但對我來說,這仍然不能解釋爲什麼標點符號跳躍。國際化只是混亂;) – JohannesR

+0

但只有標點符號跳轉,文本和數字的行爲相同。我想知道這是不是一個從右到左的組件和從左到右的字符集。我對從右到左的文字一無所知。 – arcy

相關問題