# JTextArea - Schriftart ändern



## Guest (26. Jan 2005)

hallo!

ich hab eine JTextArea erstellt und eine JComboBox mit ein paar schriftarten. jetzt weiß ich nicht wie ich das machen soll, dass die ausgewählte schriftart auf die JTextArea übertragen wird. (aber das die vorherigen formatierungen nicht verloren gehen z.b.: fett, kursiv usw.)

kann mir einer helfen?


----------



## Roar (26. Jan 2005)

guck dir an: 
Font#deriveFont()
JTextArea#setFont()


----------



## Guest (26. Jan 2005)

und wie würde das dann bei mir aussehen?


```
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import javax.swing.JToolBar;
import javax.swing.JTable;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;

import java.applet.*;

// import filechooser
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.AbstractAction;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import java.awt.HeadlessException;
import java.net.MalformedURLException;

class stecknFrame extends JFrame {

  public JTextArea text;
  private String[] fonttext = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput"};
  private String[] fontgrose = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","30","31"};
  private JButton but1, but2;
  private JTable table;
  private JComboBox combobox;
  private JComboBox comgrose;
  private int style = Font.PLAIN, size = 15;
  private JButton playb;
  
  
  public void setFont(String fontName) {
             text.setFont(new Font(fontName,Font.PLAIN,15));
  }



      private class comboAction implements ActionListener {
              public void actionPerformed(ActionEvent e) {
                setFont((String)combobox.getSelectedItem());
              }
      }

  
   public stecknFrame() {
      setSize(1020,730);
      setTitle("textarea");
      
   
      // box 1
      but1 = new JButton("Fett");
      but2 = new JButton("Kursiv");

      
      combobox = new JComboBox();
      combobox.setEditable(true);
      for(int no=0; no<fonttext.length;++no)
      combobox.addItem(fonttext[no]);
      
      comgrose = new JComboBox();
      for(int no=0; no<fontgrose.length;++no)
      comgrose.addItem(fontgrose[no]);




      // Aktion but1 Fett
      but1.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                  if (source1 == but1) {
                     style ^= Font.BOLD;
                     text.setFont(new Font(fonttext[0],style, size ));
                  }
           }
      });
      
      // but2 Kursiv
      but2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == but2) {
                   style ^= Font.ITALIC;
                   text.setFont(new Font(fonttext[0],style, size));
                 }
        }
      });




      // BOX beginn

      Box box1 = Box.createHorizontalBox();

      box1.add(but1);
      box1.add(but2);
      box1.add(combobox);
      box1.add(comgrose);

      // box 2
      text = new JTextArea(50,30);
      setFont(fonttext[0]);
      Box box2 = Box.createHorizontalBox();
      box2.add(new JScrollPane(text));

      // box3
      String rowData[][] = {
        { "Info Box", "245", "Info Box" }, { "", "","sdfasdf" }, { "Italien", "220" },
        {  "Spanien", "217" }, {"Türkei", "215"} ,{"England", "214"},
        {  "Frankreich", "190" }, {"Griechenland", "185" },
        { "Deutschland", "180" }, {"Portugal", "170" }
        };
        String  columnNames[] = {"Tabelle A", "Tabelle B"};

      JTable table = new JTable( rowData, columnNames );
      Box box3 = Box.createVerticalBox();
      box3.add(new JScrollPane(table));

      // Box4
      JLabel hinweis = new JLabel("Hier können Sie Notizen etc. einfügen");
      Box box4 = Box.createHorizontalBox();
      box4.add(hinweis);
      
      // Box5
      playb = new JButton("StecknPlayer");
      playb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == playb) {

                 }
        }
      });
      
      Box box5 = Box.createHorizontalBox();
      box5.add(playb);


      // box vertikal
      Box vbox = Box.createVerticalBox();
      vbox.add(box1);
      vbox.add(box2);
      vbox.add(box4);
      vbox.add(box3);
      vbox.add(box5);
      
      
      getContentPane().add(vbox,BorderLayout.CENTER);
      
      
      
   } // ende stecknFrame
}


public class startarea {
  public static void main(String[] argv) {
    stecknFrame frame = new stecknFrame();
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
  }
}
```


----------



## thE_29 (26. Jan 2005)

Du rufst ja deine eigene setFont Methode auf!

Diese Methode setzt aber deinen Frame auf diese Schriftart!!

Wie wärs wenn du von der Textarea die Schriftart änderst??


```
// box 2
      text = new JTextArea(50,30);
      text.setFont(new Font(fonttext[0],Font.PLAIN,12);
```

Man muss halt schon wissen was seine eigenen Funktionen setzen und was nicht ^^


----------



## Gast (26. Jan 2005)

danke, geht aber irgendwie nicht. es wird ohne fehler compiliert, aber ich kann die schriftart trotzdem nicht ändern   was mach ich falsch?


----------



## Guest (26. Jan 2005)

hier nochmal der "verbesserte code" wisst ihr was da falsch ist?


```
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import javax.swing.JToolBar;
import javax.swing.JTable;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;

import java.applet.*;

// import filechooser
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.AbstractAction;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import java.awt.HeadlessException;
import java.net.MalformedURLException;

class stecknFrame extends JFrame {

  public JTextArea text;
  private String[] fonttext = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput"};
  private String[] fontgrose = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","30","31"};
  private String[] fontfarbe = {"Schwarz","Rot","Blau","Grün"};
  private JButton but1, but2;
  private JTable table;
  private JComboBox combobox, comgrose, farbe;
  private int style = Font.PLAIN, size = 15;
  private JButton playb;
  private JMenuBar bar;
  private JMenu men1, men2, men3;
  private JMenuItem jm1,jm2,jm3,jm4,jm5,jm6,jm7,jm8, jm9, jm10;
  
  
 /*    public void setFont(String fontName) {
             text.setFont(new Font(fontName,Font.PLAIN,15));
  }

      private class comboAction implements ActionListener {
              public void actionPerformed(ActionEvent e) {
                setFont((String)combobox.getSelectedItem());
              }
      }
 */
  
   public stecknFrame() {
      setSize(1020,730);
      setTitle("StecknOffice");
      
      // Oben Menu
      setJMenuBar(bar = new JMenuBar());
      
      // Menu Datei
      bar.add(men1 = new JMenu("Datei"));
      men1.add(jm1 = new JMenuItem("Öffnen"));
      men1.add(jm2 = new JMenuItem("Speichern"));
      men1.add(jm3 = new JMenuItem("Speichern unter"));
      men1.addSeparator();
      men1.add(jm10 = new JMenuItem("Drucken"));
      men1.addSeparator();
      men1.add(jm4 = new JMenuItem("Beenden"));
      
      // Menu Bearbeiten
      bar.add(men2 = new JMenu("Bearbeiten"));
      men2.add(jm5 = new JMenuItem("Kopieren"));
      men2.add(jm6 = new JMenuItem("Einfügen"));
      men2.add(jm7 = new JMenuItem("Löschen"));
      
      // Menu Hilfe
      bar.add(men3 = new JMenu("Hilfe"));
      men3.add(jm8 = new JMenuItem("Hilfe"));
      men3.addSeparator();
      men3.add(jm9 = new JMenuItem("Programm"));

      

      
      // box 1
      but1 = new JButton("Fett");
      but1.setToolTipText("Text wird dicker");
      but2 = new JButton("Kursiv");
      but2.setToolTipText("Text wird kursiv");


      // Schriftart
      combobox = new JComboBox();
      combobox.setToolTipText("Ändert die Schriftart");
      combobox.setEditable(true);
      for(int no=0; no<fonttext.length;++no)
              combobox.addItem(fonttext[no]);
      
      // Größe
      comgrose = new JComboBox();
      comgrose.setToolTipText("Ändert die Größe");
      comgrose.setEditable(true);
      for(int no=0; no<fontgrose.length;++no)
              comgrose.addItem(fontgrose[no]);
      
      // Farbe
      farbe = new JComboBox();
      farbe.setToolTipText("Ändert die Farbe");
      farbe.setEditable(true);
      for(int no=0; no<fontfarbe.length;++no)
              farbe.addItem(fontfarbe[no]);



      // Aktion but1 Fett
      but1.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                  if (source1 == but1) {
                     style ^= Font.BOLD;
                     text.setFont(new Font(fonttext[0],style, size ));
                  }
           }
      });
      
      // but2 Kursiv
      but2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == but2) {
                   style ^= Font.ITALIC;
                   text.setFont(new Font(fonttext[0],style, size));
                 }
        }
      });


      // BOX beginn

      Box box1 = Box.createHorizontalBox();

      box1.add(but1);
      box1.add(but2);
      box1.add(combobox);
      box1.add(comgrose);
      box1.add(farbe);

      // box 2
      text = new JTextArea(50,30);
      text.setFont(new Font(fonttext[0],Font.PLAIN,15));
      Box box2 = Box.createHorizontalBox();
      box2.add(new JScrollPane(text));

      // box3
      String rowData[][] = {
        { "Info Box", "245", "Info Box" }, { "", "","sdfasdf" }, { "Italien", "220" },
        {  "Spanien", "217" }, {"Türkei", "215"} ,{"England", "214"},
        {  "Frankreich", "190" }, {"Griechenland", "185" },
        { "Deutschland", "180" }, {"Portugal", "170" }
        };
        String  columnNames[] = {"Tabelle A", "Tabelle B"};

      JTable table = new JTable( rowData, columnNames );
      Box box3 = Box.createVerticalBox();
      box3.add(new JScrollPane(table));

      // Box4
      JLabel hinweis = new JLabel("Hier können Sie kleine Notizen erstellen");
      Box box4 = Box.createHorizontalBox();
      box4.add(hinweis);
      
      // Box5
      playb = new JButton("StecknPlayer");
      playb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == playb) {

                 }
        }
      });
      
      Box box5 = Box.createHorizontalBox();
      box5.add(playb);


      // box vertikal
      Box vbox = Box.createVerticalBox();
      vbox.add(box1);
      vbox.add(box2);
      vbox.add(box4);
      vbox.add(box3);
      vbox.add(box5);
      
       
      getContentPane().add(vbox,BorderLayout.CENTER);
      
      
      
   } // ende stecknFrame
}


public class stecknoffice {
  public static void main(String[] argv) {
    stecknFrame frame = new stecknFrame();
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
  }
}
```

danke im voraus!


----------



## Gast (27. Jan 2005)

weis niemand was falsch ist?


----------



## Guest (29. Jan 2005)

Ich habe es jetzt so versucht:



> String fontAuswahl = (String) schriftart.getSelectedItem();
> textfeld.setFont(new Font(schrift[0],Font.PLAIN,12));
> 
> ```
> ...


----------



## Beni (29. Jan 2005)

Dein Code wird so oder so immer dieselbe Schrift herstellen (da schrift[0] immer dasselbe sein wird), aber füg mal einen ItemListener hinzu (direkt vor den anderen Listenern), dann reagiert das Progi auf einen Klick in die Schriftart-Box.


```
combobox.addItemListener( new ItemListener(){
		public void itemStateChanged( ItemEvent e ) {
			 
			 text.setFont(new Font( combobox.getSelectedItem().toString() ,Font.PLAIN,12)); 
		}
      });
```


----------



## Guest (29. Jan 2005)

danke, ich hab da noch ein paar if else anweisungen reingetan, und jetzt kann ich jede schriftart auswählen. jetzt hab ich das gleiche mit der schriftgröße ausprobiert aber irgendwie scheint das nicht zu gehen. so hab ich es versucht:


```
comgrose.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
           String auswahl = (String) schriftart.getSelectedItem();
           if(auswahl==grose[0]) {
                text.setFont(new Font(grose[0]));
           }
           else if( auswahl==grose[1]) {
                text.setFont(new Font(schrift[1],style,grose[1]));
           }
             
         }
   	  });
[quote][/quote]
```


----------



## Beni (29. Jan 2005)

Ich verstehe nicht, was du mit all den if's machen willst?

Frag doch einfach die anderen Comboboxen (und Buttons und etc) ab, welche Einstellungen sie haben, und übergib das alles dem Konstruktor einer neuen Font.

Also was in diesem Sinne:

```
comgrose.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
           String auswahl = (String) schriftart.getSelectedItem();

           text.setFont( new Font( (String)combobox.getSelectedItem(), style, Integer.valueOf( auswahl) ) );
         }
        });
```


----------



## Gast (29. Jan 2005)

wenn ich 
text.setFont( new Font( (String)combobox.getSelectedItem(), style, Integer.valueOf( auswahl) ) );   
schreibe dann habe ich immer einen error. es zeigt andauernd auf   new    Font   (also auf das new)    . wenn ich aber 

text.setFont( new Font( (String)combobox.[1], style, Integer.valueOf( auswahl) ) ); 
schreibe dann ist der error weck, ich kann dan halt nur die zweite schriftart auswählen. was mache ich nur falsch?


----------



## Beni (29. Jan 2005)

So: ich hab mal das setzten der neuen Schrift in eine eigene Methode geschrieben "updateFont", probier es mal aus.


```
class stecknFrame extends JFrame {

  public JTextArea text;
  private String[] fonttext = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput"};
  private String[] fontgrose = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","30","31"};
  private String[] fontfarbe = {"Schwarz","Rot","Blau","Grün"};
  private JButton but1, but2;
  private JTable table;
  private JComboBox combobox, comgrose, farbe;
  private int style = Font.PLAIN, size = 15;
  private JButton playb;
  private JMenuBar bar;
  private JMenu men1, men2, men3;
  private JMenuItem jm1,jm2,jm3,jm4,jm5,jm6,jm7,jm8, jm9, jm10;
 
 
/*    public void setFont(String fontName) {
             text.setFont(new Font(fontName,Font.PLAIN,15));
  }

      private class comboAction implements ActionListener {
              public void actionPerformed(ActionEvent e) {
                setFont((String)combobox.getSelectedItem());
              }
      }
*/
 
   public stecknFrame() {
      setSize(1020,730);
      setTitle("StecknOffice");
     
      // Oben Menu
      setJMenuBar(bar = new JMenuBar());
     
      // Menu Datei
      bar.add(men1 = new JMenu("Datei"));
      men1.add(jm1 = new JMenuItem("Öffnen"));
      men1.add(jm2 = new JMenuItem("Speichern"));
      men1.add(jm3 = new JMenuItem("Speichern unter"));
      men1.addSeparator();
      men1.add(jm10 = new JMenuItem("Drucken"));
      men1.addSeparator();
      men1.add(jm4 = new JMenuItem("Beenden"));
     
      // Menu Bearbeiten
      bar.add(men2 = new JMenu("Bearbeiten"));
      men2.add(jm5 = new JMenuItem("Kopieren"));
      men2.add(jm6 = new JMenuItem("Einfügen"));
      men2.add(jm7 = new JMenuItem("Löschen"));
     
      // Menu Hilfe
      bar.add(men3 = new JMenu("Hilfe"));
      men3.add(jm8 = new JMenuItem("Hilfe"));
      men3.addSeparator();
      men3.add(jm9 = new JMenuItem("Programm"));

     

     
      // box 1
      but1 = new JButton("Fett");
      but1.setToolTipText("Text wird dicker");
      but2 = new JButton("Kursiv");
      but2.setToolTipText("Text wird kursiv");


      // Schriftart
      combobox = new JComboBox();
      combobox.setToolTipText("Ändert die Schriftart");
      combobox.setEditable(true);
      for(int no=0; no<fonttext.length;++no)
              combobox.addItem(fonttext[no]);
     
      // Größe
      comgrose = new JComboBox();
      comgrose.setToolTipText("Ändert die Größe");
      comgrose.setEditable(true);
      for(int no=0; no<fontgrose.length;++no)
              comgrose.addItem(fontgrose[no]);
     
      // Farbe
      farbe = new JComboBox();
      farbe.setToolTipText("Ändert die Farbe");
      farbe.setEditable(true);
      for(int no=0; no<fontfarbe.length;++no)
              farbe.addItem(fontfarbe[no]);



      combobox.addItemListener( new ItemListener(){
		public void itemStateChanged( ItemEvent e ) {
			updateFont();
		}
      });
      
      comgrose.addItemListener( new ItemListener(){
		public void itemStateChanged( ItemEvent e ) {
			updateFont();
		}
      });
      
      farbe.addItemListener( new ItemListener(){
		public void itemStateChanged( ItemEvent e ) {
			updateFont();
		}
      });
      
      // Aktion but1 Fett
      but1.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                  if (source1 == but1) {
                     style ^= Font.BOLD;
                     updateFont();
                  }
           }
      });
     
      // but2 Kursiv
      but2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == but2) {
                   style ^= Font.ITALIC;
                   updateFont();
                 }
        }
      });


      // BOX beginn

      Box box1 = Box.createHorizontalBox();

      box1.add(but1);
      box1.add(but2);
      box1.add(combobox);
      box1.add(comgrose);
      box1.add(farbe);

      // box 2
      text = new JTextArea(50,30);
      text.setFont(new Font(fonttext[0],Font.PLAIN,15));
      Box box2 = Box.createHorizontalBox();
      box2.add(new JScrollPane(text));

      // box3
      String rowData[][] = {
        { "Info Box", "245", "Info Box" }, { "", "","sdfasdf" }, { "Italien", "220" },
        {  "Spanien", "217" }, {"Türkei", "215"} ,{"England", "214"},
        {  "Frankreich", "190" }, {"Griechenland", "185" },
        { "Deutschland", "180" }, {"Portugal", "170" }
        };
        String  columnNames[] = {"Tabelle A", "Tabelle B"};

      JTable table = new JTable( rowData, columnNames );
      Box box3 = Box.createVerticalBox();
      box3.add(new JScrollPane(table));

      // Box4
      JLabel hinweis = new JLabel("Hier können Sie kleine Notizen erstellen");
      Box box4 = Box.createHorizontalBox();
      box4.add(hinweis);
     
      // Box5
      playb = new JButton("StecknPlayer");
      playb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == playb) {

                 }
        }
      });
     
      Box box5 = Box.createHorizontalBox();
      box5.add(playb);


      // box vertikal
      Box vbox = Box.createVerticalBox();
      vbox.add(box1);
      vbox.add(box2);
      vbox.add(box4);
      vbox.add(box3);
      vbox.add(box5);
     
       
      getContentPane().add(vbox,BorderLayout.CENTER);
     
     
     
   } // ende stecknFrame
   
   public void updateFont(){
   		text.setFont( new Font( (String)combobox.getSelectedItem(), style, 
   				Integer.valueOf((String)comgrose.getSelectedItem()) ) );
   		
   		
   		
   		text.setForeground( getColor( farbe.getSelectedIndex() ));
   }
   
   private Color getColor( int index ){
   		switch( index ){
   			case 0: return Color.BLACK;
   			case 1: return Color.RED;
   			case 2: return Color.BLUE;
   			case 3: return Color.GREEN;
   		}
   		
   		return null;
   }
}


class stecknoffice {
  public static void main(String[] argv) {
    stecknFrame frame = new stecknFrame();
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
  }
}
```


----------



## Gast (29. Jan 2005)

Wow, danke!!! leider bekomme ich den selben error wie schon oben beschrieben. (Zeile: 197)  es hat irgendwas gegen  new Font(....


----------



## Beni (29. Jan 2005)

Was??? Also bei mir funktioniert das (und dieser Konstruktor gibt es seit Java 1.0).

Lösch mal alle alten .class-Dateien und kompilier von Grund auf ne (man kann ja hoffen...), und sonst poste mal die ganze Fehlermeldung bitte.


----------



## Guest (29. Jan 2005)

hab die .class dateien neu gelöscht, hat leider nichts gebracht.

hier die fehlermeldung:

stecknoffice.java:229: cannot resolve symbol

symbol  : constructor Font (java.lang.String,int,java.lang.Integer)

location: class java.awt.Font

         text.setFont( new Font( (String)combobox.getSelectedItem(), style,

                       ^
1 error


der pfeil zeig aufs  new


----------



## Beni (29. Jan 2005)

Ah, ok, Problem erkannt. Du benutzt kein Java 1.5, nicht wahr? :wink:

Dann ersetze

```
text.setFont( new Font( (String)combobox.getSelectedItem(), style,
               Integer.valueOf((String)comgrose.getSelectedItem()) ) );
```

durch 

```
text.setFont( new Font( (String)combobox.getSelectedItem(), style,
               Integer.parseInt((String)comgrose.getSelectedItem()) ) );
```

(und wenn dies auch nicht geht: durch

```
text.setFont( new Font( (String)combobox.getSelectedItem(), style,
               Integer.valueOf((String)comgrose.getSelectedItem()).intValue() ) );
```
 )


----------



## Gast (29. Jan 2005)

DANKE!!! 
noch eine letzte frage    ist java 1.5 besser, oder reichen ältere versionen für einen anfänger aus?


----------



## Beni (29. Jan 2005)

Abgesehen von weniger Bugs und neuen Klassen: Java 1.5 erweitert die Sprache Java selbst. Es gibt nun Generics, Autoboxing, Varargs, Annotations, und ein neuer Typ Schleifen (jaja, ich weiss, das sagt jetzt nicht gerade viel aus. Es sind aber ziemlich tolle Sachen, die das Programmieren erleichtern können).

Meiner Meinung nach sind ältere Versionen (=1.4) gut genug zum einsteigen, aber spätestens wenn man nicht mehr über jede Zeile nachdenken muss, sollte 1.5 auf den Rechner.


----------

