2016-04-09 16 views
0

私は電卓用の数字パッドを持っています。ボタンを押したときに、JTextFieldに数字が1つだけ表示されます。 JTextFieldで数字を複数回表示させるには、ユーザーがボタンを2回以上押すことを許可するにはどうすればいいですか?たとえば、誰かが1つのキーを2回押すと、11が表示されます。ここにこの部分のための私のコードがあり、助けていただきありがとうございます、ありがとう!ボタンは1つの数字だけを出力します

@Override 
public void actionPerformed(ActionEvent e) { 
    if(e.getActionCommand().equals("1")){ 
     numField.setText("1"); 
    } 
} 
+0

あなたは 'numField.setText(numField.getText()+ "1")を使用することができます;' –

+0

キーバインドを(--->より多くのJavaスイング電卓を検索) – mKorbel

+0

うーん、いいえ、私はこれにキーバインディングを使用しません。 OPのようなアクションコマンドが優れています。 – markspace

答えて

1

古いテキストを取得し、この

@Override 
public void actionPerformed(ActionEvent e) { 
    if(e.getActionCommand().equals("1")){ 
     numField.setText(numField.getText() + "1"); 
    } 
} 
+0

ありがとう、私はちょうどあなたが投稿したようにその権利を考えた。それはテキストを取得し、最後にハードコードされたものを追加するので意味をなさない。 – Blastoize34

+0

@ Blastoize34役に立つ答えを正しいとマークすることもできます。 –

0

.setTextはあなたのものがその中にあるものを設定します。

提案: グローバル変数を追加し、そのグローバル変数にsetTextを追加します。

0

あなたのコードで何をしているのですか?テキストを "1"に設定しています... この行を見て変更してください。どのようにしてそれを変更して、すでにtextFieldに入っている文字列ですか?

numField.setText("1"); 
0

のようなその上に新しいものがフィールドのテキストを設定し、「設定」を追加。フィールドテキストには追加されません。上のコードでは、ボタンを2回または30回押すと結果は常に1になります。

結果を別の変数に保存し、その変数を表示します。

StringBuilder accumulator = new StringBuilder(); 

@Override 
public void actionPerformed(ActionEvent e) { 
    accumulator.append(e.getActionCommand()); 
    numField.setText(accumulator.toString()); 
} 

テストされていません。

0

これを行うための別の戦略:

final Set<String> actionSet = new HashSet<String>(); 
    actionSet.add("1"); 
    actionSet.add("2"); 
    actionSet.add("3"); 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if(actionSet.contains(e.getActionCommand())){ 
      numField.setText(numField.getText() + e.getActionCommand()); 
     } 
    } 
関連する問題