2017-04-22 4 views
0

この質問では、ユーザーは最初のテキストフィールドに値を入力します ユーザーは計算を押す必要があります。 ユーザーがこの行に入力した値を取得するには、値を取得してテキストフィールドにテキストを印刷

int j = Integer.parseInt(s.getText()); 

が、私はエラーを持っている、と言う

:は囲みスコープで定義された非finalローカル変数sを参照してくださいすることはできません。

はその後、私は2番目のテキストフェイルド にY1を印刷したいが、私は何をするのか分からないという

package ass3; 

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import java.awt.GridLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 

    public class secondsConvert { 
    public static void main(String[] args) 
    { 
    JFrame.setDefaultLookAndFeelDecorated(true); 

     JFrame frame = new JFrame("second convert program"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLayout(new GridLayout(8,2)); 


     JLabel seconds = new JLabel("Enter seconds",SwingConstants.RIGHT); 
     frame.add(seconds); 

     JTextField s = new JTextField(10); 
     frame.add(s); 


     JLabel year = new JLabel("Years",SwingConstants.RIGHT); 
     frame.add(year); 

     JTextField y = new JTextField(10); 
     frame.add(y); 


     JLabel week = new JLabel("Weeks",SwingConstants.RIGHT); 
     frame.add(week); 

     JTextField w = new JTextField(10); 
     frame.add(w); 


     JLabel day = new JLabel("Days",SwingConstants.RIGHT); 
     frame.add(day); 

     JTextField d = new JTextField(10); 
     frame.add(d); 


     JLabel hours = new JLabel("Hours",SwingConstants.RIGHT); 
     frame.add(hours); 

     JTextField h = new JTextField(10); 
     frame.add(h); 


     JLabel minuts = new JLabel("Minuts",SwingConstants.RIGHT); 
     frame.add(minuts); 

     JTextField m = new JTextField(10); 
     frame.add(m); 


     JLabel un = new JLabel("Seconds",SwingConstants.RIGHT); 
     frame.add(un); 

     JTextField u = new JTextField(10); 
     frame.add(u); 

     JButton b1 = new JButton("OK"); 
     frame.add(b1); 
     JButton b2 = new JButton("Calculate"); 
     frame.add(b2); 


     ActionListener act = new ActionListener() 
      { 
      public void actionPerformed(ActionEvent e) 
      { 
       int j = Integer.parseInt(s.getText()); 

       int y1=j/31536000; 
       int a=j%31536000; 

      } 
     }; 

     b2.addActionListener(act); 

     frame.pack(); 
     frame.setVisible(true); 
} 
    } 
+0

それはあまりにも私の医師とうまくいきましたが、それは私と一緒に働いていなかったuntel私は言葉最終@YCF_Lを追加 –

+0

私と正常に動作します –

答えて

1

問題は匿名内部クラスは、ローカルのコピーを作成することがあるためでありますフィールドが最終的なものでない場合、そのコピーはオリジナルと同期していない可能性があります(hereから)

などのmainメソッド前1.宣言変数:

公共の静的な無効メイン(文字列[]引数)

public class secondsConvert { 

JTextField s = new JTextField(10); 

public static void main(String[] args) 
{ 
} 
} 
  • がfinalとして変数を宣言し、

      {

      final JTextField s = new JTextField(10);

      }

  • 6

    この答えはあなたの2番目の質問です。 year(y textfield)でy1を印刷する場合は、このようにしてください。計算後のあなたの行為actionlistner内

    y.setText(Integer.toString(y1)); 
    
    関連する問題