2009-07-28 29 views
0

これは奇妙なことだと思うかもしれませんが、ここから皆さんからいくつかの提案を受けたいと思っていました。私はJava開発の初心者です(ASP.NET Web開発の2年後)、私は最近、最初のJavaプロジェクト、つまり電卓に取り組み始めました。彼らは、そこには数多くの電卓があることを理解していますが、それは良い初心者のプロジェクトだと思っていました。Javaからの読み込みJTextArea

とにかく、私は助けが必要です。現在、私は、約5行の高さである(単純なJTextFieldではなく)スクロールJTextAreaを表示に使用しています。ユーザーがリストをスクロールして以前のエントリなどを表示できるようにします。ボックスの書式は1行に数えます。プログラムは次のように答えを生成します。

私の実際の質問は、これを実装する最良の方法は何ですか?私の考えは、equalsが押されたときに最後の行までJTextAreaを読み込み、その行を演算子(+、 - など)とオペランドで検索しようとしました。これはこれを行う最善の方法ですか?これはうまくいくはずですが、煩雑になり、非常に非効率的に聞こえるかもしれません。私は、JTextAreaを置き換えても、他のいくつかのコンポーネントがうまくいくと思っています。

ありがとうございます!

+0

リストの各要素はseparete計算になり、まだあなたは、ユーザーが過去の計算を見ることができますので、おそらくのJList(drowpdownリスト)は、よりappropiateだろう。 とにかくプログラムを簡略化するためのアイデア – OscarRyz

答えて

0

あなたのアイデアは面白いです。だから、あなたは〜のような行を持つでしょう。

2 + 2

その後、計算を押したときには、ライン

というように、あなたは別の式を入力できを追加します。

これはうまくいくかもしれませんが、あなたが言ったように、これは最も効率的な実装ではありません...しかし、それは望ましい機能を得ることのトレードオフに過ぎません。

私はあなたが(JTextAreaを使って)書いた方法でそれを実装しようとしていましたが、私はスキャナを使用して、一度に値の文字列を走査します。

行に+/-がある場合は、計算を行い、元の行と答えを文字列に追加します。

新しい文字列はテキストフィールドの新しい値です。

この方法では、古いエントリをさらに頻繁に再計算するため、かなり煩雑になります。

文書の最後の行が継続して保存されているか、行がなくなったときに最後に保存された行を計算して答えを追加すれば、それほど悪くないと思います。古いものとその回答を表示するには、計算に入力するのJTextFieldを使用

、およびJList


は、ここで私はどうなるのかです。

+0

私は何をしようとしているのか、あなたはビクターの頭の上に置いた。私は標準的な電卓で見たいと思うものを考えてそれを作ろうとしていました。私はあなたの提案を念頭に置いていきます。 – darthnosaj

1

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); 
1

あなたが異なるインターフェースに開かれている場合は、あなたが入力あなたの「新しいとして受け取ることができ、そこから自分のビューの上、でJTextFieldような何かをしようとする場合があります入力された方程式を入力し、その下に同じ幅のJListをスクロールすると、前の方程式とその結果がすべてスクロールされます。これにより、現在のフォーミュラの構文解析がはるかに簡単になります。また、前回の数式とその結果をスクロール可能なリストに保存する簡単な時間が得られます。

+0

私が嫌う限り、私はあなたが言及したような何かをやり遂げることを想像するでしょう。私は本当に単一のボックスが欲しかったが、おそらく本当に乱雑になるだろうと分かっていた。私はまだそれを試してみるかもしれないが、私はこのルートに行くことになるかもしれないという気持ちがある。ありがとう! – darthnosaj

+0

これはちょうど楽しみのためです、そうですか?あなたは両方を行うことができます。それはあなたが言語で同じことをするためのさまざまな方法で良い印象を与えるでしょう。がんばろう。 – akf

0

各行を1つの操作として扱うことができます。あなたは文字列の配列を使用することができますその方法によって直接返さ:

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

そして、あなたは完全な動作として、それらの正確それぞれを知っているよ(無効である可能性がありますが、その」別の話)

これはあなたが尋ねたことですか、私はあなたを完全に誤解していますか?

0

もっと単純な解決策は、実際には2つのコンポーネントを使用すると思います。これまでに起こったことの「履歴」を保持するTextAreaと、ユーザが新しいエントリを入力するテキストフィールド。

0

返信いただいた皆様に感謝します。あなたはみな、私に考えてもらうためのアイデアをくれました。私は今、私は単一のJTextAreaを使用するという独自の考え方に進み、プロセスを最適化する方法を見つけようとします。それが(非常に可能な)難しすぎるならば、私は過半数の助言に従い、2つの別々のフィールドを使用します。みんなに返信ありがとう!

関連する問題