簡體   English   中英

從Java JTextArea讀取

[英]Reading from Java JTextArea

好的,因此可能看起來有些奇怪,但是我想從這里的所有人那里獲得一些建議。 我是一名新手Java開發人員(經過2年的ASP.NET Web開發),最近我開始從事我的第一個Java項目-計算器。 我意識到他們那里有很多計算器,但是我認為這將是一個不錯的初學者項目。

無論如何,這是我需要幫助的地方。 當前,我正在使用大約5行高的Scrolling JTextArea進行顯示(而不是簡單的JTextField)。 我希望用戶能夠滾動列表以查看以前的條目等。 框的格式將在一行上是等式,而程序將在下一行上生成答案,依此類推。

我的真正問題是,實現此目標的最佳方法是什么? 我的第一個想法是在按下equals時通讀JTextArea,直到最后一行,並嘗試在該行中搜索運算符(+,-等)和操作數。 這是解決此問題的最佳方法嗎? 盡管這行得通,但我認為這樣做可能很麻煩並且聽起來效率很低。 我樂於接受任何建議,甚至可能替換JTextArea還是其他一些組件會更好。

謝謝!

無需通讀JTextArea內容-使用JTextArea.append()添加到末尾。 以下是JTextArea內容操作的一些示例:

JTextArea ta = new JTextArea("Initial Text");

// Insert some text at the beginning
int pos = 0;
ta.insert("some text", pos);

// Insert some text after the 5th character
pos = 5;
ta.insert("some text", pos);

// Append some text
ta.append("some text");

// Replace the first 3 characters with some text
int start = 0;
int end = 3;
ta.replaceRange("new text", start, end);

// Delete the first 5 characters
start = 0;
end = 5;
ta.replaceRange(null, start, end);

如果您對不同的接口開放,則可能要嘗試在視圖頂部嘗試使用類似JTextField的方法,從中可以接收“新”輸入方程式的輸入,然后在其下方以相同的寬度包含JList滾動以獲取所有先前的方程式及其結果。 這將使當前公式的解析變得更加容易,並且您還可以輕松地將以前的公式及其結果保存在可滾動的列表中,並且可以輕松選擇將最新的公式放在最前面。

你的想法很有趣。 所以你會有這樣的一行。

2 + 2

然后按計算時將添加行

4

依此類推,您可以輸入另一個方程式。

它可能會起作用,但是正如您所說的,這並不是最有效的實現方式……但這只是獲得所需功能的權衡。

如果我打算用您描述的方式(使用JTextArea)實現它,我將使用掃描儀,並一次一行掃描值字符串。

如果行中有+/-,則進行計算,並將原始行和答案都添加到字符串中。

新字符串是文本字段的新值。

由於您將不斷重新計算用戶的舊條目,因此此方法將變得很麻煩。

我猜如果您連續存儲文檔的最后一行,當行數用盡時,計算最后存儲的內容並追加答案,那還不錯。


這就是我要做的:

使用JTextField輸入計算結果,並使用JList顯示舊計算及其答案。

您可以將每行視為一個單獨的操作。 這樣,您可以使用直接由以下方式返回的String數組:

String [] operations = textArea.getText().split("\n");

然后,您將知道它們中的每一個都作為一個完整的操作(可能是無效的,但這是另一回事了)

這是您的要求嗎?還是我完全誤讀了您?

我認為一個更簡單的解決方案實際上將使用兩個組件。 一個TextArea用來保存到目前為止發生的事情的“歷史”,還有一個Textfield用戶可以在其中輸入新條目的地方。

感謝所有答復。 你們都給了我一些想法。 我想現在,我將沿用最初的想法,即使用單個JTextArea並嘗試找到優化流程的方法。 如果這太困難了(這很有可能),我將遵循多數意見並使用兩個單獨的字段。 感謝大家的回覆!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM