JtextPane одной линии - PullRequest
       25

JtextPane одной линии

2 голосов
/ 19 мая 2011

Я хочу реализовать JTextField с пользовательскими шрифтами. Я узнал, что мы не можем сделать это в JTextField. Теперь я использую JtextPane у меня проблема Как убедиться, что карат не переходит на следующую строку, когда пользователь нажимает ввод. ?

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

Добавьте DocumentFilter и не вставляйте туда символы "\ n".

1 голос
/ 19 мая 2011
class DocFilter extends DocumentFilter{

        public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
            fb.insertString(offset, string.replaceAll("\\n", ""), attr); 
        }

       public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException {
            fb.insertString(offset, string.replaceAll("\\n", ""), attr); 
        }
    }

Этот код хорошо работает

0 голосов
/ 19 мая 2011

Добавить keyListener в jTextPane и отслеживать ввод ключа в методе keyPressed(e).Код клавиши для ввода - 10.


Попробуйте привязки клавиш следующим образом:

JTextPane pane = new JTextPane();
// Get KeyStroke for enter key
KeyStroke enterKey = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0);
// Override enter for a pane
String actionKey = "none";
InputMap map = pane.getInputMap();
map.put(enterKey, actionKey);

Это переопределит поведение клавиши ввода для textPane и ничего не сделает, если пользователь нажмет ввод.

...