以下是我的程序。目的是在用户键入数字并按Enter键之后,将罗马数字转换为阿拉伯数字。
这是一项家庭作业,我们被迫JTextAreas
代替JTextFields
。
线路中存在我的错误:enterRomanNumber.addActionListener(handler)
; 该错误显示为:
“对于类型JTextArea,未定义方法addActionListener(ArabicToRomanGUI.HandlerForTextArea)”
我似乎无法弄清楚为什么会收到此错误或如何纠正它,有人可以建议一下。
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class ArabicToRomanGUI extends JFrame
{
private static final long serialVersionUID = 1L;
private JTextArea enterRomanNumber = new JTextArea();
JLabel label = new JLabel();
JPanel panel = new JPanel();
JFrame frame = new JFrame();
//TestArea contructor adds jtextArea to jframe
public ArabicToRomanGUI()
{
super("Convert a Roman Numeral");
setLayout(new FlowLayout());
//Text field to enter a roman numeral
enterRomanNumber = new JTextArea(1,25);
enterRomanNumber.setText("Delete this text and Enter a Roman Numerial Here!");
//enterRomanNumber.setAlignmentX(0);
//enterRomanNumber.setAlignmentY(0);
add(enterRomanNumber);
HandlerForTextArea handler = new HandlerForTextArea();
enterRomanNumber.addActionListener(handler);
}
private class HandlerForTextArea implements ActionListener
{
//used to process textArea events
@Override
public void actionPerformed(ActionEvent e)
{
String userInput = "";
userInput = enterRomanNumber.getText();
userInput = userInput.toUpperCase();
ConversionLogic.ConvertFromRomanToArabic(userInput); //converts user string of Roman numerals to an int in arabic
String arabicNumberAsString = ConversionLogic.getConvertedRomanNumeral();
enterRomanNumber.setText(arabicNumberAsString);
//user pressed enter in JTextField enterNumberField
if(e.getSource() == enterRomanNumber)
{
//enterRomanNumber.setText(arabicNumberAsString);
if (ConversionLogic.getCheckFail() == true)
{
JOptionPane.showMessageDialog(frame, "The Roman Numeral entered is Invalid", "Error", JOptionPane.ERROR_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(frame, "The arabic equivalent is " + arabicNumberAsString + "." , "Conversion Successful", JOptionPane.PLAIN_MESSAGE);
}
}
}
}
}//end inner class TextAreaHandler
有关更好的答案,请参见 @MadProgrammer 的答案。
我的解决方案:
JTextArea没有ActionListener。
所以只用KeyListener
代替
HandlerForTextArea handler = new HandlerForTextArea();
enterRomanNumber.addKeyListener(handler);
实现KeyListener
private class HandlerForTextArea implements KeyListener
{
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getKeyCode() == VK_ENTER){
// TODO Your bussiness
}
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
问题内容: 我无法在Mac OS(10.10.1-Yosemite)上启动用于Android开发的Android Studio。 问题答案: 在finder中打开 Android Studio 的应用程序包,然后编辑 Info.plist 文件。更改密钥JVMversion。输入1.6+,而不是1.6 *。那对我有用! 干杯! 编辑: 尽管在旧版本的Android Studio中这是必需的,但不再
我无法启动我的Android Studio在Mac OS上进行Android开发(10.10.1-Yosemite)
它在do while循环内的第三行崩溃,不等待我的输入: 堆栈跟踪: 线程“main”java中出现异常。util。非接触性异常 在爪哇。util。扫描仪。throwFor(未知来源) 在爪哇。util。扫描仪。下一个(未知源) java.util.canner.next国际(来源不明) java.util.canner.next国际(来源不明) 在主。river.main(river.java:
我是一个初学者,我写了这个代码,但它似乎不起作用。我运行代码,框架不出现idk为什么。 我还有一个主要方法: (班级名称是匈牙利语不看)
我已经将JSTL-1.2.jar添加到项目设置->libraries和war:爆炸->WEB-INF/lib中。我还尝试删除依赖项并设置不同的版本。如果我同时删除<%@taglib%>fmt和c声明,page可以工作(至少不会导致服务器500错误)。 JSP: 依赖关系 最近的一组错误: 错误:Jasper验证器:绝对URI:http://java.sun.com/jsp/jstl/fmt无法在w
问题内容: 使用在Windows 8上使用Python 2.7给我的错误: 问题: 如何解决错误?运行给出了同样的错误… 问题答案: 您可以改用ol’good 。 不是pip,而是它的一个好方面是也能够下载和安装二进制程序包,这使您无需准备VC ++。当然,这取决于二进制文件是为您的Python版本准备的。 更新: 是的,Pip现在可以安装二进制文件! 有一种新的二进制Python存档格式(whe