下面列出了javax.swing.text.JTextComponent#scrollRectToVisible ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if (scroll) {
if (comp.getCaretPosition() < i || comp.getCaretPosition() > j) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
protected void highlight(JTextComponent comp, int i, int j, boolean scroll) {
Highlighter highlighter = comp.getHighlighter();
highlighter.removeAllHighlights();
try {
i = toComponentPosition(comp, i);
j = toComponentPosition(comp, j);
highlighter.addHighlight(i, j+1, DefaultHighlighter.DefaultPainter);
if ( scroll ) {
if ( comp.getCaretPosition()< i || comp.getCaretPosition()>j ) {
comp.moveCaretPosition(i);
comp.scrollRectToVisible(comp.modelToView(i));
}
}
}
catch (BadLocationException ble) {
errMgr.internalError(tmodel.root.event.scope.st, "bad highlight location", ble);
}
}
/**
* Scrolls the specified text component so the text between the starting and ending index are visible.
*/
public static void scrollToText(JTextComponent textComponent, int startingIndex, int endingIndex) {
try {
Rectangle startingRectangle = textComponent.modelToView(startingIndex);
Rectangle endDingRectangle = textComponent.modelToView(endingIndex);
Rectangle totalBounds = startingRectangle.union(endDingRectangle);
textComponent.scrollRectToVisible(totalBounds);
textComponent.repaint();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
/**
* Scrolls the specified text component so the text between the starting and ending index are visible.
*/
public static void scrollToText(JTextComponent textComponent, int startingIndex, int endingIndex) {
try {
Rectangle startingRectangle = textComponent.modelToView(startingIndex);
Rectangle endDingRectangle = textComponent.modelToView(endingIndex);
Rectangle totalBounds = startingRectangle.union(endDingRectangle);
textComponent.scrollRectToVisible(totalBounds);
textComponent.repaint();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
/**
* Ensure that the given region will be visible in the view
* with the appropriate find insets.
*/
private void ensureVisible(JTextComponent c, int startOffset, int endOffset, Insets extraInsets) {
try {
Rectangle startBounds = c.modelToView(startOffset);
Rectangle endBounds = c.modelToView(endOffset);
if (startBounds != null && endBounds != null) {
startBounds.add(endBounds);
if (extraInsets != null) {
Rectangle visibleBounds = c.getVisibleRect();
int extraTop = (extraInsets.top < 0)
? -extraInsets.top * visibleBounds.height / 100 // percentage
: extraInsets.top * endBounds.height; // line count
startBounds.y -= extraTop;
startBounds.height += extraTop;
startBounds.height += (extraInsets.bottom < 0)
? -extraInsets.bottom * visibleBounds.height / 100 // percentage
: extraInsets.bottom * endBounds.height; // line count
int extraLeft = (extraInsets.left < 0)
? -extraInsets.left * visibleBounds.width / 100 // percentage
: extraInsets.left * endBounds.width; // char count
startBounds.x -= extraLeft;
startBounds.width += extraLeft;
startBounds.width += (extraInsets.right < 0)
? -extraInsets.right * visibleBounds.width / 100 // percentage
: extraInsets.right * endBounds.width; // char count
}
c.scrollRectToVisible(startBounds);
}
} catch (BadLocationException e) {
// do not scroll
}
}
/**
* Scrolls the specified text component so the text between the starting and ending index are visible.
*/
public static void scrollToText(JTextComponent textComponent, int startingIndex, int endingIndex) {
try {
Rectangle startingRectangle = textComponent.modelToView(startingIndex);
Rectangle endDingRectangle = textComponent.modelToView(endingIndex);
Rectangle totalBounds = startingRectangle.union(endDingRectangle);
textComponent.scrollRectToVisible(totalBounds);
textComponent.repaint();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
private static void scrollToCenter(JTextComponent tc, int pos) throws BadLocationException {
Rectangle rect = tc.modelToView(pos);
// Java 9: Rectangle rect = tc.modelToView2D(pos).getBounds();
Container c = SwingUtilities.getAncestorOfClass(JViewport.class, tc);
if (Objects.nonNull(rect) && c instanceof JViewport) {
rect.x = Math.round(rect.x - c.getWidth() / 2f);
rect.width = c.getWidth();
rect.height = Math.round(c.getHeight() / 2f);
tc.scrollRectToVisible(rect);
}
}
public void showFor(final JTextComponent target) {
oldCaretPosition = target.getCaretPosition();
Container view = target.getParent();
Dimension wd = getPreferredSize();
//wd.width = target.getVisibleRect().width;
Point loc = new Point(0, view.getHeight());
setSize(wd);
setLocationRelativeTo(view);
SwingUtilities.convertPointToScreen(loc, view);
setLocation(loc);
jTxtFind.setFont(target.getFont());
jTxtFind.getDocument().addDocumentListener(this);
WindowAdapter closeListener = new WindowAdapter() {
@Override
public void windowDeactivated(WindowEvent e) {
target.getDocument().removeDocumentListener(QuickFindDialog.this);
Markers.removeMarkers(target, marker);
if (escaped) {
Rectangle aRect;
try {
aRect = target.modelToView(oldCaretPosition);
target.setCaretPosition(oldCaretPosition);
target.scrollRectToVisible(aRect);
} catch (BadLocationException ex) {
}
}
dispose();
}
};
addWindowListener(closeListener);
this.target = new WeakReference<JTextComponent>(target);
Pattern p = dsd.get().getPattern();
if (p != null) {
jTxtFind.setText(p.pattern());
}
jChkWrap.setSelected(dsd.get().isWrap());
setVisible(true);
jTxtFind.selectAll();
}
private static void scrollToCenter(JTextComponent tc, int pos) throws BadLocationException {
Rectangle rect = tc.modelToView(pos);
// Java 9: Rectangle rect = tc.modelToView2D(pos).getBounds();
Container c = SwingUtilities.getAncestorOfClass(JViewport.class, tc);
if (Objects.nonNull(rect) && c instanceof JViewport) {
rect.x = (int) (rect.x - c.getWidth() * .5);
rect.width = c.getWidth();
rect.height = (int) (c.getHeight() * .5);
tc.scrollRectToVisible(rect);
}
}
public void actionPerformed(ActionEvent evt, JTextComponent target) {
if (target != null) {
Caret caret = target.getCaret();
BaseDocument doc = (BaseDocument)target.getDocument();
try {
int dot = caret.getDot();
// #232675: if bounds are defined, use them rather than line start/end
Object o = target.getClientProperty(PROP_NAVIGATE_BOUNDARIES);
PositionRegion bounds = null;
int lineStartPos = Utilities.getRowStart(target, dot);
if (o instanceof PositionRegion) {
bounds = (PositionRegion)o;
int start = bounds.getStartOffset();
int end = bounds.getEndOffset();
int boundLineStart = Utilities.getRowStart(target, start);
// refinement: only use the boundaries if the caret is at the same line
// as boundary start; otherwise ignore the boundary and use document lines.
if (boundLineStart == lineStartPos && dot > start && dot <= end) {
// move to the region start
dot = start;
} else {
bounds = null;
}
}
if (bounds == null) {
if (homeKeyColumnOne) { // to first column
dot = lineStartPos;
} else { // either to line start or text start
int textStartPos = Utilities.getRowFirstNonWhite(doc, lineStartPos);
if (textStartPos < 0) { // no text on the line
textStartPos = Utilities.getRowEnd(target, lineStartPos);
}
if (dot == lineStartPos) { // go to the text start pos
dot = textStartPos;
} else if (dot <= textStartPos) {
dot = lineStartPos;
} else {
dot = textStartPos;
}
}
}
// For partial view hierarchy check bounds
dot = Math.max(dot, target.getUI().getRootView(target).getStartOffset());
String actionName = (String) getValue(Action.NAME);
boolean select = selectionBeginLineAction.equals(actionName)
|| selectionLineFirstColumnAction.equals(actionName);
// If possible scroll the view to its begining horizontally
// to ease user's orientation in the code.
Rectangle r = target.modelToView(dot);
Rectangle visRect = target.getVisibleRect();
if (r.getMaxX() < visRect.getWidth()) {
r.x = 0;
target.scrollRectToVisible(r);
}
target.putClientProperty("navigational.action", SwingConstants.WEST);
if (select) {
caret.moveDot(dot);
} else {
caret.setDot(dot);
}
} catch (BadLocationException e) {
target.getToolkit().beep();
}
}
}