Użycie komponentów tekstowych

  1. Przeanalizuj i przetestuj przykład.

  2. Rozwiń go do postaci w pełni funkcjonalnego elektronicznego pamiętnika.

 

Przykład użycia kolorów, fontów itd można znaleźć (jar):

http://java.sun.com/docs/books/tutorial/uiswing/components/example-swing/TextComponentDemo.java http://java.sun.com/docs/books/tutorial/uiswing/components/example-swing/LimitedStyledDocument.java

 

pobierz jar


import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.*;
import java.util.*;
import javax.swing.text.*;

public class Diary extends JFrame implements ActionListener,CaretListener
{
   JTextArea ed;
   JPasswordField pfield;
   JTextField wzfield;
   JButton otwbutt,zapbutt,sbutt,dbutt;
   
   DefaultHighlighter highlight;
   DefaultHighlighter.DefaultHighlightPainter painter;
   
   //akcje przyciskow i pola wzorca wyszukiwania
   public void actionPerformed(ActionEvent e)                                            
   {                                                                                     
      Object target=e.getSource();                                                       
                                                                                         
      if(target==dbutt)                                                                  
      {                                                                                  
         java.util.Date d=new Date();                                                    
         ed.append("\n\n-- "+d+ " --\n");                                                
         ed.requestFocus(true);                                                          
      }                                                                                  
                                                                                         
      else if(target==sbutt || target==wzfield)                                          
      {                                                                                  
         String wzorzec=wzfield.getText();                                               
         String tekst=ed.getText();                                                      
                                                                                         
         int pos=tekst.indexOf(wzorzec);                                                 
         int posk=pos+wzorzec.length();                                                  
                                                                                         
         if(pos!=-1)                                                                     
         {                                                                               
            ed.setCaretPosition(posk);                                                   
                                                                                         
            try                                                                          
            {                                                                            
               highlight.addHighlight(pos,posk,painter);                                 
            }                                                                            
            catch(BadLocationException exc){}                                            
         }                                                                               
                                                                                         
         else JOptionPane.showMessageDialog( this , "Nie znaleziono wzorca: "+wzorzec ); 
                                                                                         
         ed.requestFocus(true);                                                          
      }                                                                                  
   }                                                                                     
   
   //akcja karetki edytora
   public void caretUpdate(CaretEvent ce) 
   {                                      
      highlight.removeAllHighlights();    
   }                                      
   
   //konstruktor
   Diary()                                                                                 
   {                                                                                       
      this.setSize(750,560);                                                               
      this.setTitle("Diary");                                                              
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                                 
      Container c=this.getContentPane();                                                   
      c.setLayout(new BorderLayout());                                                     
                                                                                           
      ed=new JTextArea();                                                                  
      ed.setLineWrap(true);                                                                
      ed.setWrapStyleWord(true);                                                           
      ed.setFont(new Font("Times New Roman", Font.PLAIN, 16));                             
      JScrollPane scred=new JScrollPane(ed);                                               
      scred.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);             
      scred.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);      
      c.add(BorderLayout.CENTER,scred);                                                    
                                                                                           
      JLabel lab=new JLabel("Hasło: ");                                                    
      pfield=new JPasswordField(8);                                                        
      otwbutt=new JButton("otwórz");                                                       
      zapbutt=new JButton("zapisz");                                                       
      JLabel wzlab=new JLabel("   Wzorzec: ");                                             
      wzfield=new JTextField(10);                                                          
      sbutt=new JButton("szukaj");                                                         
      dbutt=new JButton("wstaw datę");                                                     
      JPanel dolnypanel=new JPanel();                                                      
      dolnypanel.add(lab);                                                                 
      dolnypanel.add(pfield);                                                              
      dolnypanel.add(otwbutt);                                                             
      dolnypanel.add(zapbutt);                                                             
      dolnypanel.add(wzlab);                                                               
      dolnypanel.add(wzfield);                                                             
      dolnypanel.add(sbutt);                                                               
      dolnypanel.add(dbutt);                                                               
      c.add(BorderLayout.SOUTH,dolnypanel);                                                
                                                                                           
      pfield.setToolTipText("Hasło do szyfrowania/deszyfrowania pliku");                   
      otwbutt.setToolTipText("Odczyt z pliku");                                            
      zapbutt.setToolTipText("Zapis do pliku");                                            
      wzfield.setToolTipText("Wzorzec do wyszukiwania");                                   
      sbutt.setToolTipText("Trzeba jeszcze dodać wyszukiwanie następnego wystąpienia");    
      dbutt.setToolTipText("Trzeba to oczywiście spolszczyć, np: -- sobota, 24 lipca --"); 
                                                                                           
      ed.addCaretListener(this);                                                           
      pfield.addActionListener(this);                                                      
      wzfield.addActionListener(this);                                                     
      sbutt.addActionListener(this);                                                       
      dbutt.addActionListener(this);                                                       
                                                                                           
      highlight = new DefaultHighlighter();                                                
      painter = new DefaultHighlighter.DefaultHighlightPainter( Color.orange );            
                                                                                           
      ed.setHighlighter( highlight );                                                      
                                                                                           
      this.setVisible(true);                                                               
   }                                                                                       
   
   //uruchamianie
   public static void main(String[] args) 
   {                                      
      new Diary();                        
   }                                      
}