我正在制作一个将莫尔斯电码转换为英文字母的系统。我正在使用称为“写”的JTextfeild键入文本,并使用另一个JTextfeild调用“查看”以查看在写入时键入的文本。但是我只能设置一根莫尔斯线。例如,如果我在“ Write” textfeild上键入A,它仅打印“ .-”。当我再次输入“ B”时,然后查看textfeild集“ -...”。我想打印字母数。下面是我的电源线。private void writeKeyReleased(java.awt.event.KeyEvent evt) { if (evt.getKeyCode() == 65) { view.setText(".-"); } else if (evt.getKeyCode() == 66) { view.setText("-..."); } else if (evt.getKeyCode() == 67) { view.setText("-.-."); } else if (evt.getKeyCode() == 68) { view.setText("-.."); } else if (evt.getKeyCode() == 69) { view.setText("."); } else if (evt.getKeyCode() == 70) { view.setText("..-."); } else if (evt.getKeyCode() == 71) { view.setText("--."); } else if (evt.getKeyCode() == 72) { view.setText("...."); } else if (evt.getKeyCode() == 73) { view.setText(".."); } else if (evt.getKeyCode() == 74) { view.setText(".---"); } else if (evt.getKeyCode() == 75) { view.setText(".-.-"); } else if (evt.getKeyCode() == 76) { view.setText(".-.."); } else if (evt.getKeyCode() == 77) { view.setText("--"); } else if (evt.getKeyCode() == 78) { view.setText("-."); } else if (evt.getKeyCode() == 79) { view.setText("---"); } else if (evt.getKeyCode() == 80) { view.setText(".--."); } else if (evt.getKeyCode() == 81) { view.setText("--.-"); } else if (evt.getKeyCode() == 82) { view.setText(".-."); } else if (evt.getKeyCode() == 83) { view.setText("..."); } else if (evt.getKeyCode() == 84) { view.setText("-"); } else if (evt.getKeyCode() == 85) { view.setText("..-"); } else if (evt.getKeyCode() == 86) { view.setText("...-"); } else if (evt.getKeyCode() == 87) { view.setText(".--"); } else if (evt.getKeyCode() == 88) { view.setText("-..-"); } else if (evt.getKeyCode() == 89) { view.setText("-.--"); } else { view.setText("--.."); }} 最佳答案 我正在制作将Mose线转换为英文字母的系统。我是  使用名为“ write”的jtextfeild键入文本,另一个使用jtextfeild  调用“视图”以查看在写入时键入的内容。将DocumentListener用于JTextComponent而不是low_level KeyListener,否则,您将无法从(例如)Ctrl+C(SystemClipBoard)输入字符序列,或删除选定的字符,然后输出到其他花药冻结,没有任何更改,没有任何更改,因为JComponent只能从单个KeyListener触发Event另外,如果要替换,删除,修改用户输入到Char中的单个DocumentFilter或char,则可以使用chars sequence例如import java.awt.GridLayout;import javax.swing.*;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;public class TextLabelMirror { private JPanel mainPanel = new JPanel(); private JTextField field = new JTextField(20); private JTextField field1 = new JTextField(20); public TextLabelMirror() { field.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { updateLabel(e); } @Override public void insertUpdate(DocumentEvent e) { updateLabel(e); } @Override public void removeUpdate(DocumentEvent e) { updateLabel(e); } private void updateLabel(DocumentEvent e) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { field1.setText(field.getText()); } }); } }); mainPanel.setLayout(new GridLayout(1, 0, 10, 0)); mainPanel.add(field); mainPanel.add(field1); } public JComponent getComponent() { return mainPanel; } private static void createAndShowUI() { JFrame frame = new JFrame("TextLabelMirror"); frame.getContentPane().add(new TextLabelMirror().getComponent()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { createAndShowUI(); } }); }}
09-30 17:40
查看更多