获取值并将文本打印到文本字段
问题描述:
在这个问题中,我希望用户在第一个文本字段中输入值 用户应按计算。 要获得用户输入此行的值应该执行的操作。获取值并将文本打印到文本字段
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);
}
}
答
这是因为
的问题是,匿名内部类做的本地副本他们使用的字段,如果字段不是最终的,那么副本可能不会与原来同步导致各种问题。(摘自here)
您有两种选择:前主要方法1.声明变量作为像:
public class secondsConvert {
JTextField s = new JTextField(10);
public static void main(String[] args)
{
}
}
-
声明变量作为最终:
公共静态无效的主要(字串[] args)
{
final JTextField s = new JTextField(10);
}
答
这个答案是你的第二个问题。如果你想在年份(y textfield)打印y1,你应该尝试这样。在计算之后你的行为actionlistner内
y.setText(Integer.toString(y1));
它正常工作与我 –
它好工作与我的医生太多,但它并没有和我一起untel我加字最后@YCF_L –