⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linehighlightpainter.java

📁 java swing 开发代码
💻 JAVA
字号:
// LineHighlightPainter.java// An implementation of HighlightPainter that underlines text with a thick line.//package	jswing.ch21;import javax.swing.*;import javax.swing.text.*;import java.awt.*;public class LineHighlightPainter implements Highlighter.HighlightPainter {  // paint a thick line under one line of text, from r extending rightward to x2  private void paintLine(Graphics g, Rectangle r, int x2) {    int ytop = r.y + r.height - 3;    g.fillRect(r.x, ytop, x2 - r.x, 3);  }  // paint thick lines under a block of text  public void paint(Graphics g, int p0, int p1, Shape bounds, JTextComponent c) {    Rectangle r0 = null, r1 = null, rbounds = bounds.getBounds();    int xmax = rbounds.x + rbounds.width; // x coordinate of right edge    try {  // convert positions to pixel coordinates      r0 = c.modelToView(p0);      r1 = c.modelToView(p1);    } catch (BadLocationException ex) { return; }    if ((r0 == null) || (r1 == null)) return;    g.setColor( c.getSelectionColor() );    // special case if p0 and p1 are on the same line    if (r0.y == r1.y) {      paintLine(g, r0, r1.x);      return;    }    // first line, from p1 to end-of-line    paintLine(g, r0, xmax);    // all the full lines in between, if any (assumes that all lines have    // the same height--not a good assumption with JEditorPane/JTextPane)    r0.y += r0.height; // move r0 to next line     r0.x = rbounds.x; // move r0 to left edge    while (r0.y < r1.y) {      paintLine(g, r0, xmax);      r0.y += r0.height; // move r0 to next line    }    // last line, from beginning-of-line to p1    paintLine(g, r0, r1.x);  }  public static void main(String args[]) {    // extend DefaultCaret as an anonymous inner class    Caret lineHighlightPainterCaret = new DefaultCaret() {      private Highlighter.HighlightPainter lhp = new LineHighlightPainter();      // override getSelectionPainter to return the LineHighlightPainter      protected Highlighter.HighlightPainter getSelectionPainter() {        return lhp;      }    };    JFrame frame = new JFrame("LineHighlightPainter demo");    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    JTextArea area = new JTextArea(9, 45);    area.setCaret(lineHighlightPainterCaret);    area.setLineWrap(true);    area.setWrapStyleWord(true);    area.setText("This is the story\nof the hare who\nlost his spectacles.");    frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);    frame.pack();    frame.setVisible(true);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -