Hallo, Ich versuche gerade einen Text_Editor erstellen, den ich am leibesten auch für das Schreiben für e-mails verwenden würde.
Ich hab von dem Vorhaben auch eine Vorlage in einem Buch - ich will es aber lieber selbst umsetzen, um was zu lernen.
Meine Frage im Moment ist: Weshalb erhalte ich eine null Ponter Exception, wenn ich das Projekt ausführe und zum Beispiel die Schriftart wechsele.
Ich hab von dem Vorhaben auch eine Vorlage in einem Buch - ich will es aber lieber selbst umsetzen, um was zu lernen.
Meine Frage im Moment ist: Weshalb erhalte ich eine null Ponter Exception, wenn ich das Projekt ausführe und zum Beispiel die Schriftart wechsele.
Java:
package test;
import javax.swing.*;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.plaf.metal.OceanTheme;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class Textverarbeitung implements ItemListener {
JFrame tvframe;
JTextArea tvarea;
JPanel tvpanel;
JMenuBar tvbar;
JComboBox<String> fonts;
JComboBox<String> styles;
JComboBox<String> farben;
String farbe,fontname,style;
public Textverarbeitung() {}
public static void main (String []args) {
Textverarbeitung Textverarbeitung2 = new Textverarbeitung();
Textverarbeitung2.run();
}
public void run() {
JFrame tvframe= new JFrame();
try {
// Set metl look and feel
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
// Set theme to ocean
MetalLookAndFeel.setCurrentTheme(new OceanTheme());
}
catch (Exception e) {
}
JTextArea tvarea = new JTextArea("Langeweile");
tvarea.setEditable(true);
tvarea.setPreferredSize(new Dimension(600,300));
tvarea.setLineWrap(true);
JScrollPane scroll= new JScrollPane();
scroll.getViewport().add(tvarea);
JMenuBar tvbar = new JMenuBar();
JMenu tvmenudatei = new JMenu("Datei");
JMenu tvmenubearbeiten = new JMenu("Bearbeiten");
JMenu tvmenusuchen = new JMenu("Suchen");
JMenu tvmenuversenden = new JMenu("Versenden");
tvbar.add(tvmenudatei);
tvbar.add(tvmenubearbeiten);
tvbar.add(tvmenusuchen);
tvbar.add(tvmenuversenden);
JMenuItem dateiladen =new JMenuItem("Datei laden");
tvmenudatei.add(dateiladen);
JMenuItem dateispeichern= new JMenuItem("Datei speichern");
tvmenudatei.add(dateispeichern);
JPanel tvpanel= new JPanel();
tvpanel.setLayout(new BorderLayout());
tvframe.setLayout(new BorderLayout());
tvframe.add(BorderLayout.NORTH,tvbar);
tvpanel.setSize(300, 200);
tvpanel.setVisible(true);
JComboBox<String> fonts = new JComboBox <String>();
fonts.addItem(Font.SERIF);
fonts.addItem(Font.SANS_SERIF);
fonts.addItem(Font.MONOSPACED);
JComboBox<String> styles = new JComboBox <String>();
styles.addItem("normal");
styles.addItem("kursiv");
styles.addItem("fett");
JComboBox <String> farben= new JComboBox<String>();
farben.addItem("Schwarz");
farben.addItem("Rot");
farben.addItem("Grün");
farben.addItem("Gelb");
farben.addItem("Blau");
farben.addItem("Cyan");
farben.addItem("Magenta");
JPanel auswahlboxen = new JPanel();
auswahlboxen.setLayout(new GridLayout(1,4));
auswahlboxen.add(fonts);
auswahlboxen.add(styles);
auswahlboxen.add(farben);
tvpanel.add(BorderLayout.NORTH, auswahlboxen);
tvpanel.add(BorderLayout.CENTER, scroll);
tvframe.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
tvframe.add(tvpanel);
tvframe.pack();
tvframe.setVisible(true);
fonts.setSelectedItem("SansSerif");
styles.setSelectedItem("normal");
farben.setSelectedIndex(0);
fonts.addItemListener((ItemListener) this);
styles.addItemListener((ItemListener) this);
farben.addItemListener((ItemListener) this);
}
public void fontAktualisieren() {
int fontstil;
String farbe,fontname,style;
int punktgröße;
fontname = (String)fonts.getSelectedItem();
style = (String)styles.getSelectedItem();
farbe= (String)farben.getSelectedItem();
if(farbe.equals("Schwarz"))
tvarea.setForeground(Color.black);
if(farbe.equals("Rot"))
tvarea.setForeground(Color.red);
if(farbe.equals("Grün"))
tvarea.setForeground(Color.green);
if(farbe.equals("Gelb"))
tvarea.setForeground(Color.yellow);
if(farbe.equals("Blau"))
tvarea.setForeground(Color.blue);
if(farbe.equals("Cyan"))
tvarea.setForeground(Color.cyan);
if(farbe.equals("Magenta"))
tvarea.setForeground(Color.magenta);
fontstil=Font.PLAIN;
if(style.equals("kursiv"))
fontstil += Font.ITALIC;
if(style.equals("fett"))
fontstil+= Font.BOLD;
tvarea.setFont(new Font (fontname, fontstil, 12));
}
@Override
public void itemStateChanged(ItemEvent e) {
fontAktualisieren();
}
}