获取值并将文本打印到文本字段

问题描述:

在这个问题中,我希望用户在第一个文本字段中输入值 用户应按计算。 要获得用户输入此行的值应该执行的操作。获取值并将文本打印到文本字段

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

,但我有一个错误,

它说:不能指在一个封闭的范围定义的非最终局部变量s。

然后我想在第二个文本费尔德 打印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

它正常工作与我 –

+0

它好工作与我的医生太多,但它并没有和我一起untel我加字最后@YCF_L –

这是因为

的问题是,匿名内部类做的本地副本他们使用的字段,如果字段不是最终的,那么副本可能不会与原来同步导致各种问题。(摘自here

您有两种选择:前主要方法1.声明变量作为像:

public class secondsConvert { 

JTextField s = new JTextField(10); 

public static void main(String[] args) 
{ 
} 
} 
  1. 声明变量作为最终:

    公共静态无效的主要(字串[] args)

    {

    final JTextField s = new JTextField(10);

    }

开始=>

这个答案是你的第二个问题。如果你想在年份(y textfield)打印y1,你应该尝试这样。在计算之后你的行为actionlistner内

y.setText(Integer.toString(y1));