Przeanalizuj i przetestuj przykład.
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
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(); } } |