📄 inputhandler.java
字号:
}
}
private static final class InsertTabAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
if (!textArea.isEditable())
{
textArea.getToolkit().beep();
return;
}
//textArea.overwriteSetSelectedText("\t");
textArea.overwriteSetSelectedText(" ");
}
}
public static final class NextCharAction
implements ActionListener
{
private final boolean select;
private NextCharAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
final int caret = textArea.getCaretPosition();
if (caret == textArea.getDocumentLength())
{
textArea.getToolkit().beep();
return;
}
if (select)
{
textArea.select(textArea.getMarkPosition(),
caret + 1);
}
else
{
textArea.setCaretPosition(caret + 1);
}
}
}
public static final class NextLineAction
implements ActionListener
{
private final boolean select;
private NextLineAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int caret = textArea.getCaretPosition();
final int line = textArea.getCaretLine();
if (line == textArea.getLineCount() - 1)
{
textArea.getToolkit().beep();
return;
}
int magic = textArea.getMagicCaretPosition();
if (magic == -1)
{
magic = textArea.offsetToX(line,
caret - textArea.getLineStartOffset(line));
}
caret = textArea.getLineStartOffset(line + 1)
+ textArea.xToOffset(line + 1, magic);
if (select)
{
textArea.select(textArea.getMarkPosition(), caret);
}
else
{
textArea.setCaretPosition(caret);
}
textArea.setMagicCaretPosition(magic);
}
}
public static final class NextPageAction
implements ActionListener
{
private final boolean select;
private NextPageAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
final int lineCount = textArea.getLineCount();
int firstLine = textArea.getFirstLine();
final int visibleLines = textArea.getVisibleLines();
final int line = textArea.getCaretLine();
firstLine += visibleLines;
if (firstLine + visibleLines >= lineCount - 1)
{
firstLine = lineCount - visibleLines;
}
textArea.setFirstLine(firstLine);
final int caret = textArea.getLineStartOffset(Math.min(textArea.getLineCount() - 1,
line + visibleLines));
if (select)
{
textArea.select(textArea.getMarkPosition(), caret);
}
else
{
textArea.setCaretPosition(caret);
}
}
}
public static final class NextWordAction
implements ActionListener
{
private final boolean select;
private NextWordAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int caret = textArea.getCaretPosition();
final int line = textArea.getCaretLine();
final int lineStart = textArea.getLineStartOffset(line);
caret -= lineStart;
final String lineText = textArea.getLineText(textArea
.getCaretLine());
if (caret == lineText.length())
{
if (lineStart + caret == textArea.getDocumentLength())
{
textArea.getToolkit().beep();
return;
}
caret++;
}
else
{
final String noWordSep = (String) textArea.getDocument().getProperty("noWordSep");
caret = TextUtilities.findWordEnd(lineText, caret, noWordSep);
}
if (select)
{
textArea.select(textArea.getMarkPosition(),
lineStart + caret);
}
else
{
textArea.setCaretPosition(lineStart + caret);
}
}
}
private static final class OverwriteAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
textArea.setOverwriteEnabled(!textArea.isOverwriteEnabled());
}
}
public static final class PrevCharAction
implements ActionListener
{
private final boolean select;
private PrevCharAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
final int caret = textArea.getCaretPosition();
if (caret == 0)
{
textArea.getToolkit().beep();
return;
}
if (select)
{
textArea.select(textArea.getMarkPosition(),
caret - 1);
}
else
{
textArea.setCaretPosition(caret - 1);
}
}
}
public static final class PrevLineAction
implements ActionListener
{
private final boolean select;
private PrevLineAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int caret = textArea.getCaretPosition();
final int line = textArea.getCaretLine();
if (line == 0)
{
textArea.getToolkit().beep();
return;
}
int magic = textArea.getMagicCaretPosition();
if (magic == -1)
{
magic = textArea.offsetToX(line,
caret - textArea.getLineStartOffset(line));
}
caret = textArea.getLineStartOffset(line - 1)
+ textArea.xToOffset(line - 1, magic);
if (select)
{
textArea.select(textArea.getMarkPosition(), caret);
}
else
{
textArea.setCaretPosition(caret);
}
textArea.setMagicCaretPosition(magic);
}
}
public static final class PrevPageAction
implements ActionListener
{
private final boolean select;
private PrevPageAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int firstLine = textArea.getFirstLine();
final int visibleLines = textArea.getVisibleLines();
final int line = textArea.getCaretLine();
if (firstLine < visibleLines)
{
firstLine = visibleLines;
}
textArea.setFirstLine(firstLine - visibleLines);
final int caret = textArea.getLineStartOffset(Math.max(0, line - visibleLines));
if (select)
{
textArea.select(textArea.getMarkPosition(), caret);
}
else
{
textArea.setCaretPosition(caret);
}
}
}
public static final class PrevWordAction
implements ActionListener
{
private final boolean select;
private PrevWordAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int caret = textArea.getCaretPosition();
final int line = textArea.getCaretLine();
final int lineStart = textArea.getLineStartOffset(line);
caret -= lineStart;
final String lineText = textArea.getLineText(textArea
.getCaretLine());
if (caret == 0)
{
if (lineStart == 0)
{
textArea.getToolkit().beep();
return;
}
caret--;
}
else
{
final String noWordSep = (String) textArea.getDocument().getProperty("noWordSep");
caret = TextUtilities.findWordStart(lineText, caret, noWordSep);
}
if (select)
{
textArea.select(textArea.getMarkPosition(),
lineStart + caret);
}
else
{
textArea.setCaretPosition(lineStart + caret);
}
}
}
private static final class RepeatAction
implements ActionListener,
NonRecordable
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
textArea.getInputHandler().setRepeatEnabled(true);
final String actionCommand = evt.getActionCommand();
if (actionCommand != null)
{
textArea.getInputHandler().setRepeatCount(Integer.parseInt(actionCommand));
}
}
}
private static final class ToogleRectAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
textArea.setSelectionRectangular(!textArea.isSelectionRectangular());
}
}
private static final class InsertCharAction
implements ActionListener,
NonRepeatable
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
final String str = evt.getActionCommand();
final int repeatCount = textArea.getInputHandler().getRepeatCount();
if (textArea.isEditable())
{
final StringBuffer buf = new StringBuffer();
for (int i = 0; i < repeatCount; i++)
{
buf.append(str);
}
textArea.overwriteSetSelectedText(buf.toString());
}
else
{
textArea.getToolkit().beep();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -