2011-12-17 22 views
-3

私のフォームに3つのJTextフィールドがあります。 mark1とmark2を取得するための最初の2つのフィールド、最後にmark1とmark2の合計を表示するフィールド。JTextfieldプログラムによる追加

問題は、mark1に値を入力するときに、合計フィールドに表示する必要があることです。また、mark2値を入力するときに、mark1値とmark2フィールドの値をJavaコードを使用して合計フィールドにすぐに追加する必要がありますか?

注ボタンを使用して合計を計算することは望ましくありません。

+0

**注**確かなものを追加するためのボタンを使用してはいけません。 BTW - 他の人があなたのためにやってくれることを期待する前に、自分の仕事をしていることを疑問に思っていましたか? SOはコード生成ファクトリーではありません。 –

+1

あなたはコードを書いていますか? – RanRag

答えて

4

ここは例です。

enter image description here

package sof; 

import java.awt.GridLayout; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.event.DocumentEvent; 
import javax.swing.event.DocumentListener; 

public class Test extends JFrame { 
    JTextField text1 = new JTextField(); 
    JTextField text2 = new JTextField(); 
    JTextField text3 = new JTextField(); 

    public Test() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 

     CustomDocListener cd = new CustomDocListener(); 

     text1.getDocument().addDocumentListener(cd); 
     text2.getDocument().addDocumentListener(cd); 

     JPanel pnl = new JPanel(new GridLayout(3, 1)); 
     pnl.add(text1); 
     pnl.add(text2); 
     pnl.add(text3); 
     this.add(pnl); 
     setSize(200, 100); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new Test().setVisible(true); 
    } 

    class CustomDocListener implements DocumentListener{ 
     public void changedUpdate(DocumentEvent e) { 
     } 

     public void insertUpdate(DocumentEvent e) { 
      fireChange(); 
     } 

     public void removeUpdate(DocumentEvent e) { 
      fireChange(); 
     } 

     private void fireChange(){ 
      int value1 = 0, value2 = 0; 
      try { 
       value1 = Integer.parseInt(text1.getText()); 
      } catch (NumberFormatException ne) { 
       value1 = 0; 
      } 
      try { 
       value2 = Integer.parseInt(text2.getText()); 
      } catch (NumberFormatException ne) { 
       value2 = 0; 
      } 
      text3.setText(value1 + value2 + ""); 
     } 

    } 
} 
+0

-1、KeyListenerを使用します。テキストコンポーネントの内容がいつ変化するかを知りたい場合は、DocumentListenerを使用する必要があります。 KeyListenerはAWTで使用されます。 Swingには、DocumentListener、DocumentFilter、Key Bindingsのコンセプトのような新しいクラスと優れたクラスがあります。 – camickr

+0

@camickr:入力いただきありがとうございます、私の答えを変更しました。 – bragboy

+0

また、原則として、カスタマイズされたドキュメントよりもDocumentFilterが優先されます。この場合、実際には問題はありませんが、DocumentFilterを任意のDocumentに追加できるため、JTextField、JTextArea、JEditorPane、JTextPaneで同じフィルタを使用する可能性があります。 DocumentFilterの目的は、入力が文書に追加される前にそれをフィルタリングすることです。基本的にカスタムドキュメントを使用して同じ機能を提供することで、ホイールを再発明しました。 – camickr

関連する問題