Advertisement
Guest User

MainWindow.java

a guest
Sep 18th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.event.FocusEvent;
  3. import java.awt.event.FocusListener;
  4. import java.awt.event.MouseEvent;
  5. import javax.swing.JFrame;
  6. import javax.swing.JScrollPane;
  7. import javax.swing.JTextArea;
  8. import javax.swing.event.DocumentEvent;
  9. import javax.swing.event.DocumentListener;
  10. import javax.swing.event.MouseInputListener;
  11. import javax.swing.text.BadLocationException;
  12. import javax.swing.text.Element;
  13. import javax.swing.text.Highlighter;
  14. import java.awt.Color;
  15. import javax.swing.text.DefaultHighlighter;
  16.  
  17. public class MainWindow extends JFrame implements MouseInputListener, DocumentListener, FocusListener{
  18.     private JTextArea jta;
  19.     private JTextArea lines;
  20.     private Highlighter highlighter;
  21.  
  22.     public MainWindow(){
  23.         super("Line Numbering & Highlighter Example");
  24.     }
  25.     public void createAndShowGUI(){
  26.         /* Set up frame */
  27.         JFrame frame = new MainWindow();
  28.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  29.  
  30.         /* Set up JtextArea */
  31.         jta = new JTextArea();
  32.         jta.getDocument().addDocumentListener(this);
  33.  
  34.         /* Set up Highlighter */
  35.         highlighter = jta.getHighlighter();
  36.  
  37.         /* Set up line numbers */
  38.         lines = new JTextArea("1");
  39.         lines.setBackground(Color.LIGHT_GRAY);
  40.         lines.setEditable(false);
  41.         lines.addMouseListener(this);
  42.         lines.addFocusListener(this);
  43.  
  44.         /* Set up scroll pane */
  45.         JScrollPane jsp = new JScrollPane();
  46.         jsp.getViewport().add(jta);
  47.         jsp.setRowHeaderView(lines);
  48.         jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  49.  
  50.         jta.setText("Hello world how are you today!");
  51.  
  52.         /* pack and show frame */
  53.         frame.add(jsp);
  54.         frame.pack();
  55.         frame.setSize(500,500);
  56.         frame.setVisible(true);
  57.     }
  58.  
  59.     /* Document Listener Events */
  60.     public void changedUpdate(DocumentEvent de) {
  61.         lines.setText(getText());
  62.     }
  63.     public void insertUpdate(DocumentEvent de) {
  64.         lines.setText(getText());
  65.     }
  66.     public void removeUpdate(DocumentEvent de) {
  67.         lines.setText(getText());
  68.     }
  69.     public String getText(){
  70.         int caretPosition = jta.getDocument().getLength();
  71.         Element root = jta.getDocument().getDefaultRootElement();
  72.         String text = "1\n";
  73.         for(int i = 2; i < root.getElementIndex( caretPosition ) + 2; i++)
  74.             text += i + "\n";
  75.         return text;
  76.     }
  77.  
  78.     /* Mouse Listener Events */
  79.     public void mouseClicked(MouseEvent me) {
  80.         if(me.getClickCount() == 2){
  81.             try {
  82.                 int caretPos = lines.getCaretPosition();
  83.                 int lineOffset = lines.getLineOfOffset(caretPos);
  84.                 if(lines.getText().charAt(caretPos-1) == '\n')
  85.                     lineOffset--;
  86.                 highlighter.addHighlight(jta.getLineStartOffset(lineOffset),
  87.                                          jta.getLineEndOffset(lineOffset),
  88.                                          new MyHighlighter(Color.cyan));
  89.             } catch (BadLocationException e) {
  90.                 e.printStackTrace();
  91.             }
  92.         }
  93.     }
  94.     public void mouseEntered(MouseEvent me) {}
  95.     public void mouseExited(MouseEvent me) {}
  96.     public void mousePressed(MouseEvent me) {}
  97.     public void mouseReleased(MouseEvent me) {}
  98.     public void mouseDragged(MouseEvent me) {}
  99.     public void mouseMoved(MouseEvent me) {}
  100.  
  101.     /* Focus Listener Events for line numbers*/
  102.     public void focusGained(FocusEvent fe) {}
  103.     public void focusLost(FocusEvent fe) {
  104.         highlighter.removeAllHighlights();
  105.     }
  106.     public static void main(String[] args){
  107.         javax.swing.SwingUtilities.invokeLater(new Runnable() {
  108.                                                    public void run() {
  109.                                                               new MainWindow().createAndShowGUI();
  110.                                                    }
  111.                                            });
  112.     }
  113. }
  114.  
  115.  
  116.  
  117. class MyHighlighter extends DefaultHighlighter.DefaultHighlightPainter {
  118.     public MyHighlighter(Color c) {
  119.         super(c);
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement