[英]JTextArea won't read in text properly
我似乎無法使它正常工作。 我的分配只會讓我們使用JTextAreas。 我的代碼的問題是我無法在TextArea中讀取文本。 目標是在用戶輸入輸入后在ENTER輸入后運行邏輯。
當我運行代碼時,我只能鍵入一個字符..由於無法弄清原因,GUI會將字符顯示為零。 例如:[0b]將在TextArea中。 請幫助我不知道這一點。
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.addKeyListener(handler);
}
private class HandlerForTextArea implements KeyListener
{
//used to process text field events
@Override
public void keyTyped(KeyEvent 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.getKeyCode() == KeyEvent.VK_ENTER)
{
//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);
}
}
}
@Override
public void keyPressed(KeyEvent e) {
//not used
}
@Override
public void keyReleased(KeyEvent e) {
//not used
}
}//end inner class TextFieldHandler
}//end class ArabicToRomainGUI
正如您將在此站點上一次又一次地閱讀一樣,請不要將KeyListener
與文本組件(例如JTextArea
因為這會弄亂文本組件的功能。 相反,使用DocumentListener
當你希望檢測更改的狀態JTextArea
它發生之后,或DocumentFilter
如果你想之前被發布到文本組件檢測(也可能改變)切換到文本組件。
我看到您正在使用JTextArea(1,25)或單行JTextArea
,這使我問:為什么不使用JTextField
? 如果執行此操作並希望捕獲ENTER鍵,則只需將ActionListener
添加到JTextField
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.