2012-10-25 36 views
1

我是Java事件,侦听器和处理程序的新手。我可以编写代码来创建一个按钮点击事件和一个工作结果。但是,我无法在TextField中使用简单的输入事件来工作。Java输入事件不会激活处理程序

注意我声明并调用动作侦听器,输入处理程序并定义生成的方法执行。 (我进口的java.awt和javax.swing中的库未如下图所示)。

public convertStringToCapitalLetters() { 
    setTitle("Convert String to All Capital Letters"); 
    Container c = getContentPane(); 
    c.setLayout(new GridLayout(2, 2)); 

    inputLabel = new JLabel("Enter String: ", SwingConstants.LEFT); 
    stringTextField = new JTextField(50); 
    outputLabel = new JLabel("Capitalized String: ", SwingConstants.LEFT); 
    newStringLabel = new JLabel("", SwingConstants.RIGHT); 

    c.add(inputLabel); 
    c.add(stringTextField); 
    c.add(outputLabel); 
    c.add(newStringLabel); 

    inputHandler = new InputHandler(); 

    stringTextField.addActionListener(inputHandler); 

    setSize(WIDTH, HEIGHT); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setVisible(true); 
} 

private class InputHandler implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 
     String str, newStr; 

     str = stringTextField.getText(); 
     newStr = str.toUpperCase(); 

     newStringLabel.setText(String.format("", newStr)); 
    } 
} 

public static void main(String[] args) { 
    convertStringToCapitalLetters capitalConv = new convertStringToCapitalLetters(); 
} 
+0

请详细描述您的问题。你究竟做了什么,你无法做到?你的代码的哪一部分试图做到这一点?假设我们没有事先知道您的问题或您的代码,特别是未显示的代码。 –

+0

幸运的是,人们能够理解你的代码,但下一次,请告诉我们更多。我不知道为什么你从来没有回复我上面的评论。 –

+0

对不起,下次我会更好地格式化我的代码。我在文本框中的代码格式有问题。虽然我的错。感谢您的回应! –

回答

3

我觉得你刚刚作出了一个非常小的错误,是忘记指定String.format()

占位%s试试这个:

newStringLabel.setText(String.format("%s", newStr)); 
+0

哇,你是对的。男人,这在Eclipse中没有显示为错误。感谢您关注细节。我会确保在下次发布另一个问题之前这样做。 –

2

设置标签的文本时,您不需要String.format("", newStr)电话,你可以简单地使用

newStringLabel.setText(newStr); 
+0

你说得对。谢谢你解释了一切。我会磨练我的Eclipse环境的错误显示并减少我的愚蠢错误。 –