2016-10-19 4 views
1

がどのように私はJTextFieldの

に新しいinputed値をテキストファイルからロードされた値を追加することがreload.txt

public class VotingSystem extends javax.swing.JFrame { 

private final JTextField[] textFields; 

/** 
* Creates new form VotingSystem 
*/ 
public VotingSystem() { 
initComponents(); 

textFields = new JTextField[12]; 

textFields[0] = koontf; 
textFields[1] = baamtf; 
textFields[2] = sachitf; 
textFields[3] = fakertf; 
textFields[4] = phonsekaltf; 
textFields[5] = lauretf; 
textFields[6] = yeontf; 
textFields[7] = aguerotf; 
textFields[8] = agnistf; 
textFields[9] = lokitf; 
textFields[10] = lawliettf; 
textFields[11] = ryuzakitf; 
} private void loadActionPerformed(java.awt.event.ActionEvent evt) {          

int line = 0; 
try(Scanner scanner = new Scanner(new File("reload.txt"))){ 
    while(scanner.hasNextLine()){ 
     textFields[line++].setText(scanner.nextLine()); 
     if(line == textFields.length){ 
      break; 
     } 
    } 
}catch(FileNotFoundException ex){ 
    Logger.getLogger(VotingSystem.class.getName()).log(Level.SEVERE, null, ex); 
} 
koontf.requestFocus(); // you can only call request focus on one element at a time (it does not make sense to call it on all textfields 

}          

private void baamtfActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
}         
からの値を表示します私は投票押すと

それはまで追加ではなくshoudそれは1に戻ります。私はそれをインポートされた値に追加することができますどのような方法?以下は、投票Jbuttonのコードです。

 int pick1 = 0, pick2 = 0,pick3 = 0, pick4 = 0,pick5 = 0, pick6 = 0, pick7 = 0, pick8 = 0, pick9 = 0, pick10 = 0, pick11 = 0, pick12 = 0; 
private void voteActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 

    if (koonchk.isSelected()){ 
     pick1++; 
    koontf.setText(Integer.toString(pick1)); 
    } 
    else if (baamchk.isSelected()){ 
     pick2++; 
    baamtf.setText(Integer.toString(pick2)); 
    } 
    if(sachichk.isSelected()){ 
     pick3++; 
    sachitf.setText(Integer.toString(pick3)); 
    } 
    else if (fakerchk.isSelected()){ 
     pick4++; 
    fakertf.setText(Integer.toString(pick4)); 
    } 
    if (phonsekalchk.isSelected()){ 
     pick5++; 
    phonsekaltf.setText(Integer.toString(pick5)); 
    } 
    else if (laurechk.isSelected()){ 
     pick6++; 
    lauretf.setText(Integer.toString(pick6)); 
    } 
    if (yeonchk.isSelected()){ 
     pick7++; 
    yeontf.setText(Integer.toString(pick7)); 
    } 
    else if (aguerochk.isSelected()){ 
     pick8++; 
    aguerotf.setText(Integer.toString(pick8)); 
    } 
    else if (agnischk.isSelected()){ 
     pick9++; 
    agnistf.setText(Integer.toString(pick9)); 
    } 
    if (lokichk.isSelected()){ 
     pick10++; 
    lokitf.setText(Integer.toString(pick10)); 
    } 
    else if (lawlietchk.isSelected()){ 
     pick11++; 
    lawliettf.setText(Integer.toString(pick11)); 
    } 
    else if (ryuzakichk.isSelected()){ 
     pick12++; 
    ryuzakitf.setText(Integer.toString(pick12)); 
    } 
} 

答えて

1

問題は、あなたがあなたがロードされていたテキストの以前の値が失われ

int pick1 = 0, pick2 = 0,pick3 = 0, pick4 = 0,pick5 = 0, pick6 = 0, pick7 = 0, pick8 = 0, pick9 = 0, pick10 = 0, pick11 = 0, pick12 = 0; 

としてすべての変数を初期化しているという事実にあります。

int pick1 = Integer.parseInt(textFields[1].getText()); 
int pick2 = Integer.parseInt(textFields[2].getText()); 
. 
. 
. 
//And so on. 

このようにすると、テキストフィールド内の前の数値がそのまま残ります。

Aまだ良い解決策は、あなたが12と同様の大きさでpickとして変数の整数配列を宣言することができ、次のようになります。

int[] pick = new int[12]; 

その後の値を持つテキストフィールドを更新しようとしているメソッドを宣言

代わり

textFields[line++].setText(scanner.nextLine()); 
のあなたの読書ファイル方式で今すぐ
public void updateTextFields(){ 
    for(int i = 0; i < 12; i++){ 
     textFields[i].setText(String.valueOf(pick[i])); //corrected the code 
    } 
} 

:よう

使用

pick[i++] = Integer.parseInt(scanner.nextLine()); 

及び方法の最後の行では、単に以前updateTextFields()宣言を呼び出します。

また、投票方法では、textField.setText()のコードをすべて削除してください。最後の行では単にメソッドupadateTextFields()を呼び出します。私はこれの意味することは次のとおりです。

private void voteActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 

    if (koonchk.isSelected()){ 
     pick1++; //Change to pick[1]++ 
// koontf.setText(Integer.toString(pick1)); remove 
    } 
    else if (baamchk.isSelected()){ 
     pick2++; //change to pick[2]++ 
// baamtf.setText(Integer.toString(pick2)); remove 
    } 
    if(sachichk.isSelected()){ 
     pick3++; //change to pick[3]++ 
// sachitf.setText(Integer.toString(pick3)); remove 
    } 
    else if (fakerchk.isSelected()){ 
     pick4++; //Change to pick[4]++ 
// fakertf.setText(Integer.toString(pick4)); remove 
    } 
    if (phonsekalchk.isSelected()){ 
     pick5++; //Change to pick[5]++ 
// phonsekaltf.setText(Integer.toString(pick5)); remove 
    } 
    else if (laurechk.isSelected()){ 
     pick6++; //Change to pick[6]++ 
// lauretf.setText(Integer.toString(pick6)); remove 
    } 
    if (yeonchk.isSelected()){ 
     pick7++; //Change to pick[7]++ 
// yeontf.setText(Integer.toString(pick7)); remove 
    } 
    else if (aguerochk.isSelected()){ 
     pick8++; //Change to pick[8]++ 
// aguerotf.setText(Integer.toString(pick8)); remove 
    } 
    else if (agnischk.isSelected()){ 
     pick9++; //Change to pick[9]++ 
    //agnistf.setText(Integer.toString(pick9)); remove 
    } 
    if (lokichk.isSelected()){ 
     pick10++; //Change to pick[10]++ 
    //lokitf.setText(Integer.toString(pick10)); remove 
    } 
    else if (lawlietchk.isSelected()){ 
     pick11++; //Change to pick[11]++ 
    //lawliettf.setText(Integer.toString(pick11)); remove 
    } 
    else if (ryuzakichk.isSelected()){ 
     pick12++; //Change to pick[12]++ 
    //ryuzakitf.setText(Integer.toString(pick12)); remove 
    } 
    updateTextFields(); //Add this new line. 
} 
+0

それは、「変数のテキストフィールドが初期化されていない可能性がありますエラーを示し –

+0

それがあるべきint型PIC1 = Integer.parseInt(テキストフィールド[0] .getText()); –

+0

@。? – Blip