【发布时间】:2013-11-22 23:06:58
【问题描述】:
我正在编写我的第一个 GUI 程序,它实际上做了一些事情,但我遇到了动作侦听器的问题。完成后的程序将采用双重输入,并根据我尚未添加的一些单选按钮选择从一个单位转换为另一个单位。现在的问题是 Action 侦听器无法识别我的文本字段。
我在单独的面板中有一个输入文本字段和一个输出文本字段。我创建了一个动作侦听器,并将输入文本字段添加到侦听器。
ActionListener handler = new HandlerClass(); textField.addActionListener(handler); 然后我为处理程序类创建了一个类内定义,但是当我编写操作执行方法 textField 时,程序无法解析输出。谁能看到我做错了什么?
public class conversionDisplay extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel northPanel;
private JPanel southPanel;
private JPanel eastPanel;
private JPanel westPanel;
public conversionDisplay() {
super("Temperature Conversion");
northPanel = new JPanel(); //create northPanel
northPanel.setLayout(new GridLayout(1,2,5,5));
northPanel.add(new JPanel());
JPanel northLabelPanel = new JPanel(new BorderLayout()) ;
northLabelPanel.add(new JLabel("Input"), BorderLayout.EAST);
northPanel.add(northLabelPanel);
JTextField textField =new JTextField(10);
northPanel.add(textField);
northPanel.add(new JPanel());
southPanel = new JPanel(); //create southPanel
southPanel.setLayout(new GridLayout(1,2));
southPanel.add(new JPanel());
JPanel southLabelPanel = new JPanel(new BorderLayout());
southLabelPanel.add(new JLabel("Output "), BorderLayout.EAST);
southPanel.add(southLabelPanel);
JTextField output;
southPanel.add(output = new JTextField( 10));
output.setEditable(false);
southPanel.add(new JPanel());
add(northPanel,BorderLayout.NORTH); //add north panel
add(southPanel,BorderLayout.SOUTH); //add north panel
ActionListener handler = new HandlerClass();
textField.addActionListener(handler);
setSize(350, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private class HandlerClass implements ActionListener{
public void actionPerformed(ActionEvent e) {
double input = textField.getText();
if (input != 0)
{
output.setText(input); //Perform conversion
}
}
}
}
【问题讨论】:
标签: java swing user-interface event-handling jtextfield