SHARE
TWEET

MainWindow.java

a guest Sep 18th, 2015 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top