我是Java事件,听众和处理程序的新手。我可以编写代码来创建按钮单击事件和工作结果。但是,我无法在TextField中获得简单的输入事件。
注意我确实声明并调用动作侦听器,输入处理程序,并定义结果方法执行。 (我导入了下面未显示的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 :(得分:3)
我认为您只是犯了一个小错误,就是忘记在%s
中指定占位符String.format()
试试这个:
newStringLabel.setText(String.format("%s", newStr));
答案 1 :(得分:2)
设置标签文字时不需要String.format("", newStr)
来电,您只需使用
newStringLabel.setText(newStr);