2011-06-02 129 views
2

我用Java Swing創建了一個基本的計算器。我有的問題是如何在面板上打印每個計算。例如,我添加了兩個數字,我的面板應該看起來像2 + 4 = 6,如果我執行另一個操作,它應該在面板中附加另一個操作。簡單的java計算器

我的想法:我知道我可以使用標籤並更改標籤的值,但這不是一個好主意,因爲隨着操作的增加,我無法繼續添加標籤,我相信應該有一種方法但自從我學習Swing以來,我需要專家的幫助。

+0

我不明白的問題,什麼你的意思做「的操作增加,我不能繼續添加標籤」? – 2011-06-02 22:02:18

+0

這不是「給我teh codez」網站,你需要展示你的工作,解釋不工作的地方,並提出具體的問題......否則你的問題就會關閉。 – 2011-06-02 22:02:27

+0

@Charlesworth:我的意思是我有很少的操作,比如2 + 3 = 5,2/2 = 1,3-4 = -1等,我已經把所有這些操作打印在jpanel上,而不僅僅是一個最近的操作。我可以通過爲標籤賦值來完成標籤的操作,但是我需要所有我已經完成的操作,例如100.我如何動態地將這些操作添加到我的面板是我的問題。 – user525146 2011-06-02 22:10:11

回答

4

有兩種可能性:

  1. 使用一個JTextArea,並將其設置爲不可編輯。文本區域控件將允許您添加多行文本,以便您可以隨時繼續添加操作。

    textArea.setEditable(false);

  2. 將文本繪製爲畫布上的圖形。這是多一點參與,但您可以更好地控制文本的外觀和格式。

    g.drawString(「a + b = c」,x,y);

+0

JTextArea選項的一個重要的未提及的優勢 - 用戶將能夠輕鬆地複製/粘貼結果 – 2011-06-02 22:20:25

+0

追加到文本框的作品就像一個魅力:)。非常感謝你 – user525146 2011-06-02 23:13:54

0

面板很可能會從字符串中讀取。嘗試使用StringBuilderStringBuffer在輸入輸入時追加到字符串。

這樣,如果您選擇添加更多操作,您還可以修改/刪除最終的「= 6」並添加另一個「+ 6 = 10」。然後使用toString()當你想刷新面板上的最終結果而不創建一個全新的String。

0

要麼做一個JLabel中,而不是增加新的和顯示的,你可以在一個JLabel使用的getText()的文本,然後追加你要添加的文字,最後使用的setText()發送您的新的和完整的文本,以便一個JLabel包含所有文本。 或 你可以創建一個JPanel或JComponent(你可以用paintComponent(Graphics g)繪製並使用帶字符串繪製的g.drawString()(這將是你完整的附加文本),並且x,y要繪製的位置,例如: g.drawString(「2 + 6 = 8」,100,120); 您必須在組件上調用repaint()以更新文本。字符串某處組件可以同時提請訪問。

我希望這有助於。