Получить ключ от JTextArea

Все, что я хочу сделать, Если я нажимаю ‘{‘ этот ключ в JtextArea.automatically ‘}’, это также будет печать.

if(evt.KEY_PRESSED == '{') System.out.print("}"); 

это нормально?

для прослушивания изменений в JTextComponent есть DocumentListener, если вам нужно контролировать введенные Char, поет, символы пробелов или слова (ов), которые вы должны реализовать DocumentFilter

уведомление для Chars, зарезервированное с помощью языка (языков) программирования, вы должны использовать двойные экраны,

\\( вместо (

или

\\{ вместо {

иначе вы получите

 Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal repetition 

например

 import java.awt.*; import java.util.ArrayList; import java.util.List; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; public class TextAreaTest extends JFrame { private static final long serialVersionUID = 1L; private JTextArea textArea; public TextAreaTest() { textArea = new JTextArea(); textArea.setPreferredSize(new Dimension(60, 32)); textArea.setOpaque(true); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); ((AbstractDocument) textArea.getDocument()).setDocumentFilter(new DocumentFilter() { @Override public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { string = string.replaceAll("\\{", "\\{}"); super.insertString(fb, offset, string, attr); } @Override public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { text = text.replaceAll("\\{", "\\{}"); //TODO must do something here super.replace(fb, offset, length, text, attrs); } }); textArea.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { update(e); } @Override public void insertUpdate(DocumentEvent e) { update(e); } @Override public void removeUpdate(DocumentEvent e) { update(e); } private void update(DocumentEvent e) { List lines = getLines(textArea); String lastLine = lines.get(lines.size() - 1); int tabbedTextWidth = Utilities.getTabbedTextWidth(new Segment( lastLine.toCharArray(), 0, lastLine.length()), textArea.getFontMetrics(textArea.getFont()), 0, null, 0); int lineHeight = getLineHeight(textArea); if (lines.size() * lineHeight > textArea.getHeight() || tabbedTextWidth > textArea.getWidth()) { System.out.println("Too big! Should refuse the update!"); } } }); getContentPane().add(textArea); } private static List getLines(JTextArea textArea) { int lineHeight = getLineHeight(textArea); List list = new ArrayList(); for (int num = 0;; num++) { int i = textArea.viewToModel(new Point(0, num * lineHeight)); int j = textArea.viewToModel(new Point(0, (num + 1) * lineHeight)); if (i == 0 && j == 0) { continue; } if (textArea.getDocument().getLength() == i && i == j) { break; } String s = removeTrailingNewLine(textArea.getText().substring(i, j)); list.add(s); //System.out.println(i + " " + j + " = " + s); } return list; } private static int getLineHeight(JTextArea textArea) { return textArea.getFontMetrics(textArea.getFont()).getHeight(); } private static String removeTrailingNewLine(String s) { if (s.endsWith("\n")) { return s.substring(0, s.length() - 1); } else { return s; } } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { TextAreaTest test = new TextAreaTest(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.pack(); test.setVisible(true); } }); } } 

Я думаю, это то, что вы ищете

 if(evt.getID() == evt.KEY_PRESSED) { if(evt.getKeyChar() == '{') { System.out.print("}"); } } 

Протестировано и работает

  • Java - заполнитель в текстовом поле
  • MVC Progress Bar Threading
  • Редактор графического редактора Netbeans, создающий собственный непонятный код
  • JTable повторяющиеся значения в строке
  • Word Wrap в JButtons
  • Как изменить цвет подсветки сфокусированного JComboBox
  • Как прокручивать несколько объектов одновременно?
  • Изменение Swing JTable Cell Colors
  • Java: удаление всех строк DefaultTableModel
  • Настройка Tree.collapsedIcon для одного JTree
  • вызов java-метода для рисования графики
  • Interesting Posts

    Как начать сеанс консоли с моего маршрутизатора Cisco 5 долларов США через порт RS-232?

    создайте .exe для Windows из сценария python 3, импортирующего theano с помощью pyinstaller

    Альтернатива инструкции goto в Java

    Что означают F и D в конце числовых литералов?

    Android: определение ориентации изменено

    Гость Linux на VirutalBox не может получить доступ к локальному серверу, но может получить доступ к Интернету

    Отключите громкость сразу после ее вставки, если ее имя «XYZ»

    Как передать lambda-выражение в службу WCF?

    Как тренировать / тестировать мой собственный dataset в кафе?

    Как заставить Windows правильно отображать символы Unicode?

    Почему нет возможности комбинировать псевдо-элементы / classы, относящиеся к конкретному поставщику, в один набор правил?

    есть ли css-хак для safari только НЕ хром?

    Изменение размера текстового поля UISearchBar?

    Как изменить программу по умолчанию, используемую Outlook 2010 для отображения источника электронной почты?

    Rails 3 paperclip vs carrierwave vs dragonfly vs attachment_fu

    Давайте будем гением компьютера.