1

私は最初の Java プログラム (Netbeans で) を書いていますが、道に迷っています。誰かが私を助けるのに十分親切であるかどうか、私は現時点で2つの質問があります.

プログラムが行うべきことは次のとおりです。

4 つの「ステータス」オプションのうちの 1 つと 5 桁の数字 (これらの項目は両方ともユーザーがタッチ スクリーン モニターを介して入力します) を取り、この情報を次の件名で誰かに電子メールで送信します。 number from JFormattedTextField] は現在 [4 つの可能なステータス オプションのうちの 1 つ] です。

電子メール コマンドは、ユーザーが [入力] ボタンをクリックした後、電子メールで送信されるメッセージの確認を求めるポップアップで [OK] をクリックした後に実行されます。3 番目の質問に関しては、電子メールの部分に関するもので、このボタンとテキスト フィールドを解決した後、別のスレッドになると考えました。

これは私がこれまでに持っているタッチスクリーンUIの写真です:

質問 1: 4 つのステータス オプション (4 つの JButton) が JPanel 内にラップされています。 「statusPanel」JPanel で最新のボタンを押して、背景を青に、ボタンのテキストを白に変更したいと考えています。

ボタンの親 JPanel に mouselistener を配置して、子 (4 つのステータス JButton) のクリック イベントをリッスンすると、最後にクリックされたボタンが青/白のテキストに変わりますか? 私を正しい方向に向けてください。

質問 #2: 「current」という名前の StringBuffer から追加された、クリックされたときに数値を表示する「display」という名前の JFormattedTextField があります。 テキスト フィールドに合計 5 つの数字しか入力できないようにしたい。

フィールドに「#####」のマスクを配置しようとすると、テンキーのボタンを押したときにのみ警告音が鳴ります。現在、「Category: number」と「Format: custom」を選択し、「Format:」フィールドに「#####」と入力しています。これにより、数字ボタンをクリックしてそのテキストが表示されるのを見ることができますが、5 文字を超える入力を止めることはできません。

「プロパティ> FormatterFactory」ダイアログボックスからこれを行っています。スクリーンショットを以下に示します: (この画像を表示するには krisbunda.com/text-formatterFactory.png にアクセスしてください)

これまでのコードは次のとおりです。

助けてくれてありがとう!

4

2 に答える 2

1

コードは問題ないように見え、すべてのボタンへの参照を保持するフィールドが既に設定されているので、ステータス設定ボタン内にコードを記述し、新しいステータスでサブルーチンを呼び出す必要があります。このサブルーチンは、すべてのボタンをデフォルトの色にリセットし、新規または既存のステータスに対応する特別に選択された色をボタンに設定する必要があります。

編集:コメントに応じてここにコードを追加します...

まず、文字列では絶対に使用==しないでください。equals()同一であるが異なるオブジェクトである 2 つの文字列を取得する場合は、別の方法を使用する必要があります。それらは同じではなく、比較は失敗します。

などを使用するなど、これをコーディングするはるかに優れた方法がありますがenums、これはうまくいくはずです:

// Reset all the buttons
outsideNotReadyButton.setBackground(...);
loadedButton.setBackground(...);
outsideReadyButton.setBackground(...);
shippedButton.setBackground(...);

// Now set the one of the button's colors conditionally
String status = ...

if(status.equals("SHIPPED")) {shippedButton.setBackground(Color.BLUE);}
else if(status.equals("LOADED")) {loadedButton.setBackground(Color.BLUE);}
// ...and so on
于 2010-12-16T12:35:20.430 に答える
1
  1. は、ボタンの使用方法などで説明されているように、ボタンに対するActionListenerより一般的なアプローチです。この例でも使用されているAは、説明した方法でボタンの外観を変更する 1 つの方法です。FocusListener

  2. あなたの問題だけを示すsscceJFormattedTextFieldより役に立ちます。そのような例のいくつかは、記事How to Use Formatted Text Fields に記載されています。

于 2010-11-26T22:12:37.370 に答える