Look&Feel - Fenster starten

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich möchte das look&feel meines programmes beliebig einstellbar machen. hab da auch was probiert. nur ich kann das fenster nicht starten. woran liegt das. errors bekomme ich keine.


Code:
public void LaF() {
	JFrame frst = new JFrame();
      	frst.setTitle("Look-and-Feel Demo");
      	frst.setSize(300,300);

       Container cp = getContentPane();
       cp.setLayout(new GridLayout( 3, 1 ));
       frst.add(cp);

      	for(int i=0, n=lafs.length; i<n; i++) {
        	cb = new JCheckBox(lafs[i].getName());
         	//cp.add(cb);
         	cb.setSelected(UIManager.getLookAndFeel().getName().equals(lafs[i].getName()));
         	cb.putClientProperty("lnf name", lafs[i]);
         	cb.addItemListener(this);
         	lafGroup.add(cb);
      	}
        frst.show();
   }

   public void itemStateChanged(ItemEvent ie) {

   		cb = (JCheckBox) ie.getSource();

      	// Es werden nun die einzelnen Elemente der ButtonGroup
      	// ueberprueft, ob sie der Ausloeser der Aktion waren
      	Enumeration lafEnum = lafGroup.getElements();
      	while(lafEnum.hasMoreElements()) {
        	JCheckBox c = (JCheckBox) lafEnum.nextElement();
         	if(cb == c) {
            	JCheckBox c2 = (JCheckBox) ie.getSource();

            	// Wenn eines der Elemente selektiert wurde,
            	// soll versucht werden, das Look and Feel
            	// aller Swing-Elemente zu veraendern
            	if(c2.isSelected()) {
               		UIManager.LookAndFeelInfo info = (UIManager.LookAndFeelInfo)c2.getClientProperty("lnf name");
               		try {
                  		UIManager.setLookAndFeel(info.getClassName());
                  		SwingUtilities.updateComponentTreeUI(stecknFrame.this);
               		} catch(UnsupportedLookAndFeelException e) {
               		} catch(ClassNotFoundException e) {
               		} catch(InstantiationException e) {
               		} catch(IllegalAccessException e) {
               		}
            	}
         	}
      	}

   	} // ende LaF

danke im voraus!
 
du verwendest hier show() (Zeile 19). das ist deprecated. versuch's einfach mal mit

Code:
setVisible(true)
 
es passiert das gleiche wie mit .show();
die konsole gibt das hier aus:
Exception in thread "AWT-EventQueue-0" java.long.NullPointerException

was läuft da falsch?
 
ahhh... also doch 'ne fehlermeldung.

das sagt mir jetzt auch nicht soo viel. kannst du mal die ganze meldung (oder zumindest etwas mehr) posten?

THX
 
wie kopiert man den text in einer dosconsole? das wäre zu viel um es abzuschreiben.
danke.
 
Da hats oben links ein Icon. Klick da drauf, und geh dann weiter zum Menü "Edit", da findest du alles.
 
Danke


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at stecknFrame.LaF(stecknoffice.java:1391)
at stecknFrame$13.actionPerformed(stecknoffice.java:431)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:18
49)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258
)
at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1
000)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMen
uItemUI.java:1041)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
 
Ich vermute mal dass die Elemente im lafs Array nicht initialisiert worden sind. Also in der Art:
Code:
Object[] o = new Object[12];
System.out.println (o[0].toString());//NullPointerException
Ansonsten müssten wir wissen, welche die Zeile 1391 ist.
 
Code:
for(int i=0, n=lafs.length; i<n; i++) {
        	cb = new JCheckBox(lafs[i].getName());
         	//cp.add(cb);
         	cb.setSelected(UIManager.getLookAndFeel().getName().equals(lafs[i].getName()));
         	cb.putClientProperty("lnf name", lafs[i]);
         	cb.addItemListener(this);
         	lafGroup.add(cb);               // Zeile 1391
      	}
		frst.setVisible(true);
   }

Edit by Dotlens: Code Tags eingefügt
 
Eine NullPointerException wird ja immer geworfen, wenn etwas null ist. Bei

Code:
 lafGroup.add(cb);

koennte das ja eigentlich nur Deine List lafGroup sein, oder? Hast Du die vorher initialisiert mit

Code:
lafGroup = new ArrayList();

oder so... an Deiner CheckBox kann's nicht liegen, wuerde keine NPE werfen, iss auch nicht null... Also check einfach mal Deine List - wuerd' ich empfehlen.

Also bei List schreib' ich sowieso meistens:

Code:
if (myList == null)
    myList = new ArrayList();

wenn ich die an einer anderen Stelle erzeuge, als an der wo ich sie verwende.
 
Wie meint ihr das jetzt mit der ArrayList?
lafGroup ist ja eine ButtonGroup.
 
Ooops, sorry - wusste ich nicht. Dann kannst Du das mit der ArrayList vergessen. Hast Du Deine ButtonGroup :!: mal gecheckt?
 
hab sie schon überprüft. vielleicht hilf es euch ein wenig weiter wenn ich das noch dazuschreibe:

private ButtonGroup lafGroupe = new ButtonGroup();

wird wahrscheinlich nicht viel helfen...

danke!
 
Hab den LaF teil, zu einem eigenen programm zusammengefasst. so gehts ohne probleme.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Enumeration;


public class LaF extends JFrame implements ItemListener {

   JCheckBox cb;
   JButton b;
   ButtonGroup lafGroup = new ButtonGroup();
   UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();

   public LaF() {

      setTitle("Look-and-Feel Demo");

      // Zum Schliessen des JFrames wird eine neue Instanz der
      // externen Klasse WindowClosingAdapter registriert


      Container cp = getContentPane();
      cp.setLayout(new GridLayout( 3, 1 ));

      // Fuer jedes installierte Look and Feel wird nun eine JCheckBox
      // erzeugt, ggf. selektiert, mit einem ItemListener versehen und
      // anschliessend dem Layout und der ButtonGroup hinzugefuegt
      for(int i=0, n=lafs.length; i<n; i++) {
         cb = new JCheckBox(lafs[i].getName());
         cp.add(cb);
         b = new JButton("challo");
         cp.add(b);
         cb.setSelected(UIManager.getLookAndFeel().getName().equals(lafs[i].getName()));
         cb.putClientProperty("lnf name", lafs[i]);
         cb.addItemListener(this);
         lafGroup.add(cb);
      }



   }

   public void itemStateChanged(ItemEvent ie) {

      cb = (JCheckBox) ie.getSource();

      // Es werden nun die einzelnen Elemente der ButtonGroup
      // ueberprueft, ob sie der Ausloeser der Aktion waren
      Enumeration lafEnum = lafGroup.getElements();
      while(lafEnum.hasMoreElements()) {
         JCheckBox c = (JCheckBox) lafEnum.nextElement();
         if(cb == c) {
            JCheckBox c2 = (JCheckBox) ie.getSource();

            // Wenn eines der Elemente selektiert wurde,
            // soll versucht werden, das Look and Feel
            // aller Swing-Elemente zu veraendern
            if(c2.isSelected()) {
               UIManager.LookAndFeelInfo info = (UIManager.LookAndFeelInfo)c2.getClientProperty("lnf name");
               try {
                  UIManager.setLookAndFeel(info.getClassName());
                  SwingUtilities.updateComponentTreeUI(LaF.this);
               } catch(UnsupportedLookAndFeelException e) {
               } catch(ClassNotFoundException e) {
               } catch(InstantiationException e) {
               } catch(IllegalAccessException e) {
               }
            }
         }
      }

   }

   public static void main(String[] args) {
      LaF laf = new LaF();
      laf.setLocation (100, 100);
      laf.setSize(230, 130);
      laf.setVisible(true);
   }

}


Der letzte beitrag war ja ne blamage...

danke!
 
tschuldigung, hier muss ein mißverständnis vorliegen. mein problem ist leider noch immer nicht gelöst. ich habe den LaF teil als eigenes programm geschrieben, um zu sehen obs in ordnung ist. in meinem echtem programm kann ich es noch immer nicht starten.

hat einer noch eine idee wie man das problem lösen könnte?
 
ok, ich habs geschafft. ich musste einfach beim startbutton, das hier reinschreiben:

Code:
      jm12.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
              if(source == jm12) {
              		LaF laf = new LaF();
      			laf.setLocation (100, 100);
      			laf.setSize(230, 130);
      			laf.setVisible(true);            
              }
          }
      });

jetzt hab ich das problem, dass sich das look & feel nicht ganz ändert. also das Mainfenster ändert sein design nicht, die konturen werden "härter" (z.B.: der schwarze rand bei einem JButton wird weiß [beim neuen ocean look {java 1.5}])
und normalerweise "wölbt" sich der JButton wenn man drüber fährt, dass passiert da nicht mehr. Komischerweise werden die unterfenser im ausgewählten LaF angezeigt.

was läuft da falsch?
 
soll ich euch den ganzen quelltext senden? dass sind aber über 1000 zeilen...
 
Ok, ich poste das programm in einer abgekürzten form, sollte aber trotzdem ein ungefähres bild des ablaufes darstellen könne.

Code:
// IMPORTS

class stecknFrame extends JFrame implements Printable, ItemListener {

  public  JTextComponent text;
  private String[] schrift = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput",
                  "Times New Roman", "Monotype Corsiva", "TR", "Verdana", "Broadway BT",
                  "Comic Sans MS", "Victorian LET", "One Stroke Script LET", "Smudger LET"};
                  
  private String[] grose = {"15","16","17","18","19","20","21","22","23","24","25","26","27","30","31"};
  private String[] fontfarbe = {"Schwarz","Rot","Blau","Grün", "Mehr Farben"};
  private JButton zeichen,a, b, RGB, playb, far, hint, testb, zen, ah, unt,
              neu, ja,nein, spei, op, btnOK, btnAbbrechen, sta;
  private JTable table;
  private JComboBox schriftart, schriftart2, comgrose, comgrose2, farbe;
  private int style = Font.PLAIN, size = 17;
  private JMenuBar bar;
  private JMenu men1, men2, men3, men4, men5;
  private JMenuItem jm0,jm1,jm2,jm3,jm4,jm5,jm6,jm7,jm8, jm9, jm10, jm11, jm100,
            jm12, jm13, jm14, jm15, jm16, jm17, jm18, jm101;
  private JToolBar tool, toolbar;
  private Color newColor, newColor2;
  private Box vbox, box1, box2, box3;
  private JLabel hinweis;
  private ButtonGroup lafGroup;
  private JCheckBox radfett, radkursiv, radunterstrichen;
  private ImageIcon icon1, icon2, icon3, icon4, icon5, icon6, icon7,
            icon8, icon9;
  private StyledDocument doc = new DefaultStyledDocument();
  private SimpleAttributeSet as = new SimpleAttributeSet();
  private String m_dateiname;           // zu ladende/speichernde Datei
  private String m_aktText;
  private PrinterJob druckJob;
  private Action underline, italic,aligncentre;
  private StyledEditorKit edkit;
  private JFileChooser chooser = new JFileChooser();
  protected boolean DocumentIsUnedited=true, DocumentIsSaved=false;
  private RTFEditorKit rtfkit;
  private String filename="untitled1.txt",filetype=".txt";
  private File thisfile;
  // drucken
  private Vector<String> zeilen;
  private int zeilenHoehe;
  private int anzahlSeiten;
  private int zeilenProSeite;
  private boolean druckAbfragen;
  private String str;
  private boolean geaendert = false;                // noch nicht gespeicherte Änderungen
  private String aktDateiname = null;               // Name der aktuellen Datei
  private int suchPosition = 0;
  private JLabel statusleiste;
  private Hashtable<Object, Action> aktionen = new Hashtable<Object, Action>();
  private JFileChooser oeffnenDialog = new JFileChooser();
  private KeyStroke ks;
  private File file;
  // Öffnen/Speichern
  private BufferedReader in;
  private PrintWriter out;
  private JFileChooser fc = new JFileChooser();
  private File sf;
  private Object knopf;
  private Container cp;
  private JTextArea ta;
  private JPopupMenu popup;
  // Suchen
  private String suchbegriff;
  private JTextField eingabefeld = new JTextField();
  private JFrame f, framen;
  //private Suchdialog suchDialog = new Suchdialog(this);
  
  // Look & Feel
  private JCheckBox cb;
  private ButtonGroup lafGroupe = new ButtonGroup();
  private UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();    
  
  // JTree
  private JTree tree;
  private JPanel ptree;
  
  
  // Hauptframe
  public stecknFrame() {
      setSize(1020,730);
      setIconImage(new ImageIcon("Icon7.gif").getImage());
      setTitle("StecknOffice");
     
      
//-------------------------------------------------------------//
//----------------------Menu bar ------------------------------//
//-------------------------------------------------------------//

      //  JMenuBar / JMenuItem / ActionListener...
      
      
      // Aktion Design - Look and Feel
      jm12.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
              if(source == jm12) {
                  LaF laf = new LaF();
                  laf.setLocation (100, 100);
                  laf.setSize(230, 130);
                  laf.setVisible(true);
              }
          }
      });
      
      

  
//----------------------------------------------------------------//
//---------------------- Toolbar u. Box --------------------------//
//----------------------------------------------------------------//
 
     //Toolbar
      
       
        
      //box 1
      box1 = Box.createHorizontalBox();
      box1.add(toolbar);


      // box 2
      text = new JTextPane();
      JScrollPane ScrollPane1 = new JScrollPane(text);
      Dimension Size1 = new Dimension();
      Size1.width = 500;
      Size1.height = 970;
      text.setPreferredSize(Size1);
                 

      text.setFont(new Font(schrift[0],Font.PLAIN,15));
      box2 = Box.createHorizontalBox();
      box2.add(new JScrollPane(text));

      // box3
      
     // hier wird ein JTable erstellt, mit einem JSPlitPane

      
      box3 = Box.createVerticalBox();
      box3.add(new JScrollPane(sp));

      // Box4
      hinweis = new JLabel("Hier können Sie kleine Notizen erstellen");
      
      Box box4 = Box.createHorizontalBox();
      box4.add(hinweis);
      
      // Box5
      
      // ToolBar2 tool

     // zweite Toolbar (ist in box5
      
      
      Box box5 = Box.createHorizontalBox();
      box5.add(tool);

      // box vertikal
      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    - gehört zu ZeichenP

   
   
   // Button Zeichen Frame  (ZeichenF) !!!!!!!!!!!!!!!!!!!!
   public void ZeichenF() {
    

    // hier werden JComboBoxs erstellt

    // !!!!!!!!!!! LOOK & FEEL wird verändert !!!!!!!!!!!!
   


//-----------------------------------------------------------------//
//------------------------ Drucken Methode ------------------------//
//-----------------------------------------------------------------//

     //hier wird gedruckt


  //  info
  public void info() {
    
     // JFrame mit text-!!!!!!!! LOOK & FEEL wird verändert  !!!!!!

  } // ende  info
  
  
  //  info2
  public void info2() {

    // JFrame mit text-!!!!!!!! LOOK & FEEL wird verändert  !!!!!!

  }// ende info2
  
  
  // Suchen
  public void Suchdialog() {
    
     // Suchfenster wird erstellt !!!!!!!  LOOK & FEEL wird verändert  !!!!!!
      
   } //ende Suchen
     


   // Aktionen werden hinzugefügt, hat nichts mit dem GUI zu tun
  
  
//------------------------------ Look & Feel -------------------------------------------//

public void LaF() {

      setTitle("Look-and-Feel Demo");

      // Zum Schliessen des JFrames wird eine neue Instanz der
      // externen Klasse WindowClosingAdapter registriert


      Container cp = getContentPane();
      setLayout(new GridLayout( 3, 1 ));

      // Fuer jedes installierte Look and Feel wird nun eine JCheckBox
      // erzeugt, ggf. selektiert, mit einem ItemListener versehen und
      // anschliessend dem Layout und der ButtonGroup hinzugefuegt
      for(int i=0, n=lafs.length; i<n; i++) {
         cb = new JCheckBox(lafs[i].getName());
         cp.add(cb);
         cb.setSelected(UIManager.getLookAndFeel().getName().equals(lafs[i].getName()));
         cb.putClientProperty("lnf name", lafs[i]);
         cb.addItemListener(this);
         lafGroup.add(cb);
      }


   }

   public void itemStateChanged(ItemEvent ie) {

      cb = (JCheckBox) ie.getSource();

      // Es werden nun die einzelnen Elemente der ButtonGroup
      // ueberprueft, ob sie der Ausloeser der Aktion waren
      Enumeration lafEnum = lafGroup.getElements();
      while(lafEnum.hasMoreElements()) {
         JCheckBox c = (JCheckBox) lafEnum.nextElement();
         if(cb == c) {
            JCheckBox c2 = (JCheckBox) ie.getSource();

            // Wenn eines der Elemente selektiert wurde,
            // soll versucht werden, das Look and Feel
            // aller Swing-Elemente zu veraendern
            if(c2.isSelected()) {
               UIManager.LookAndFeelInfo info = (UIManager.LookAndFeelInfo)c2.getClientProperty("lnf name");
               try {
                  UIManager.setLookAndFeel(info.getClassName());
                  SwingUtilities.updateComponentTreeUI(stecknFrame.this);
               } catch(UnsupportedLookAndFeelException e) {
               } catch(ClassNotFoundException e) {
               } catch(InstantiationException e) {
               } catch(IllegalAccessException e) {
               }
            }
         }
      }

   }
   

} // ende StecknFrame     !!!!!!!!!!!!!!!!!!!!!


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


Danke im Voraus!
 
Tut mir leid, das was du gepostet hast hilft mir nicht weiter (solange ich dein Progi nichtmal starten kann, kann ich den Fehler auch nicht beobachten -> und damit nicht herausfinden wo er ist).

Wenn du dein Progi z.B. als ZIP hochladen könntest, wäre das extrem hilfreich. Zur Not postest du hier 1000 Zeilen hin (oder noch besser, du löschst so viel wie möglich, so dass dein Progi nur noch den LaF-Fehler kreiert (aber es muss noch lauffähig sein)).
 
Ok, hier ein großteil des programmes:

Code:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import javax.swing.JToolBar;
import javax.swing.JTable;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.plaf.basic.*;
import javax.swing.text.rtf.*;
import javax.swing.JComponent;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

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

import java.applet.*;
import java.util.Enumeration; 

// 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;
import java.io.*;

// Drucken
import javax.print.*;
//import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import java.util.*;
import java.awt.print.*;
import javax.swing.text.StyledEditorKit.UnderlineAction;
import javax.print.attribute.*;
import java.awt.*;
import java.awt.event.*;



import java.awt.*;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.UIManager;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableColumn; 

// Screenshot
import com.sun.image.codec.jpeg.JPEGCodec;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;


class stecknFrame extends JFrame implements Printable, ItemListener {

  public  JTextComponent text;
  private String[] schrift = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput",
                  "Times New Roman", "Monotype Corsiva", "TR", "Verdana", "Broadway BT",
                  "Comic Sans MS", "Victorian LET", "One Stroke Script LET", "Smudger LET"};
                  
  private String[] grose = {"15","16","17","18","19","20","21","22","23","24","25","26","27","30","31"};
  private String[] fontfarbe = {"Schwarz","Rot","Blau","Grün", "Mehr Farben"};
  private JButton zeichen,a, b, RGB, playb, far, hint, testb, zen, ah, unt,
              neu, ja,nein, spei, op, btnOK, btnAbbrechen, sta;
  private JTable table;
  private JComboBox schriftart, schriftart2, comgrose, comgrose2, farbe;
  private int style = Font.PLAIN, size = 17;
  private JMenuBar bar;
  private JMenu men1, men2, men3, men4, men5;
  private JMenuItem jm0,jm1,jm2,jm3,jm4,jm5,jm6,jm7,jm8, jm9, jm10, jm11, jm100,
            jm12, jm13, jm14, jm15, jm16, jm17, jm18, jm101;
  private JToolBar tool, toolbar;
  private Color newColor, newColor2;
  private Box vbox, box1, box2, box3;
  private JLabel hinweis;
  private ButtonGroup lafGroup;
  private JCheckBox radfett, radkursiv, radunterstrichen;
  private ImageIcon icon1, icon2, icon3, icon4, icon5, icon6, icon7,
            icon8, icon9;
  private StyledDocument doc = new DefaultStyledDocument();
  private SimpleAttributeSet as = new SimpleAttributeSet();
  private String m_dateiname;           // zu ladende/speichernde Datei
  private String m_aktText;
  private PrinterJob druckJob;
  private Action underline, italic,aligncentre;
  private StyledEditorKit edkit;
  private JFileChooser chooser = new JFileChooser();
  protected boolean DocumentIsUnedited=true, DocumentIsSaved=false;
  private RTFEditorKit rtfkit;
  private String filename="untitled1.txt",filetype=".txt";
  private File thisfile;
  // drucken
  private Vector<String> zeilen;
  private int zeilenHoehe;
  private int anzahlSeiten;
  private int zeilenProSeite;
  private boolean druckAbfragen;
  private String str;
  private boolean geaendert = false;                // noch nicht gespeicherte Änderungen
  private String aktDateiname = null;               // Name der aktuellen Datei
  private int suchPosition = 0;
  private JLabel statusleiste;
  private Hashtable<Object, Action> aktionen = new Hashtable<Object, Action>();
  private JFileChooser oeffnenDialog = new JFileChooser();
  private KeyStroke ks;
  private File file;
  // Öffnen/Speichern
  private BufferedReader in;
  private PrintWriter out;
  private JFileChooser fc = new JFileChooser();
  private File sf;
  private Object knopf;
  private Container cp;
  private JTextArea ta;
  private JPopupMenu popup;
  // Suchen
  private String suchbegriff;
  private JTextField eingabefeld = new JTextField();
  private JFrame f, framen;
  //private Suchdialog suchDialog = new Suchdialog(this);
  
  // Look & Feel
  private JCheckBox cb;
  private ButtonGroup lafGroupe = new ButtonGroup();
  private UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();    
  
  // JTree
  private JTree tree;
  private JPanel ptree;
  
  
  

  
  
  // Hauptframe
  public stecknFrame() {
      setSize(1020,730);
      setIconImage(new ImageIcon("Icon7.gif").getImage());
      setTitle("StecknOffice");
	
      
      
      
      
      
//-------------------------------------------------------------//
//----------------------Menu bar ------------------------------//
//-------------------------------------------------------------//

      setJMenuBar(bar = new JMenuBar());


      // Menu Datei
      bar.add(men1 = new JMenu("Datei"));
      men1.setMnemonic(KeyEvent.VK_D);
      
      men1.add(jm0 = new JMenuItem("Neu", new ImageIcon("New24.gif")));
      jm0.setAccelerator(KeyStroke.getKeyStroke('N', Event.CTRL_MASK));
      
      men1.add(jm1 = new JMenuItem("Öffnen", new ImageIcon("Open24.gif")));
      jm1.setAccelerator(KeyStroke.getKeyStroke('f', Event.CTRL_MASK));
      
      men1.add(jm2 = new JMenuItem("Speichern", new ImageIcon("Save24.gif")));
      jm2.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
      
      men1.add(jm3 = new JMenuItem("Speichern unter",new ImageIcon("SaveAs24.gif")));
      jm3.setAccelerator(KeyStroke.getKeyStroke('p', Event.CTRL_MASK));
      
      men1.addSeparator();
      
      men1.add(jm10 = new JMenuItem("Drucken", new ImageIcon("Print24.gif")));
      jm10.setAccelerator(KeyStroke.getKeyStroke('R', Event.CTRL_MASK));
      
      men1.addSeparator();
      
      men1.add(jm4 = new JMenuItem("Beenden", new ImageIcon("Stop24.gif")));
    jm4.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
      

      
      // Menu Bearbeiten
    bar.add(men2 = new JMenu("Bearbeiten"));
      men2.setMnemonic(KeyEvent.VK_B);
      

      men2.add(jm14 = new JMenuItem("Undo", new ImageIcon("Undo24.gif")));
    jm14.setAccelerator(KeyStroke.getKeyStroke('U', Event.CTRL_MASK));
    
      men2.add(jm15 = new JMenuItem("Rendo", new ImageIcon("Redo24.gif")));
      jm15.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
      men2.addSeparator();
      
      men2.add(jm5 = new JMenuItem("Kopieren", new ImageIcon("Copy24.gif")));
      jm5.setAccelerator(KeyStroke.getKeyStroke('K', Event.CTRL_MASK));
      
      men2.add(jm6 = new JMenuItem("Einfügen", new ImageIcon("Paste24.gif")));
      jm6.setAccelerator(KeyStroke.getKeyStroke('E', Event.CTRL_MASK));
      
      men2.add(jm7 = new JMenuItem("Löschen", new ImageIcon("Delete24.gif")));
      jm7.setAccelerator(KeyStroke.getKeyStroke('L', Event.CTRL_MASK));
      
      men2.add(jm101 = new JMenuItem("Ausschneiden", new ImageIcon("Cut24.gif")));
      jm101.setAccelerator(KeyStroke.getKeyStroke('u', Event.CTRL_MASK));
      
      men2.addSeparator();
      
      men2.add(jm16 = new JMenuItem("Select all", new ImageIcon("Import24.gif")));
      jm16.setAccelerator(KeyStroke.getKeyStroke('a', Event.CTRL_MASK));
      
      
      // Menu Format
      bar.add(men5 = new JMenu("Format"));
      men5.setMnemonic(KeyEvent.VK_F);
      
      men5.add(jm100 = new JMenuItem("Zeichen",new ImageIcon("History24.gif")));
      jm100.setAccelerator(KeyStroke.getKeyStroke('Z', Event.CTRL_MASK));
      
      men5.add(jm11 = new JMenuItem("Hintergrund", new ImageIcon("Properties24.gif")));
      jm11.setAccelerator(KeyStroke.getKeyStroke('g', Event.CTRL_MASK));
      
      men5.add(jm18 = new JMenuItem("Screenshot", new ImageIcon("Movie24.gif")));
      jm18.setAccelerator(KeyStroke.getKeyStroke('o', Event.CTRL_MASK));
      
      men5.addSeparator();
      
      men5.add(jm17 = new JMenuItem("Suchen", new ImageIcon("Replace.gif")));
      jm17.setAccelerator(KeyStroke.getKeyStroke('n', Event.CTRL_MASK));
      
      
      // Menu Design
      bar.add(men4 = new JMenu("Design"));
      men4.setMnemonic(KeyEvent.VK_E);
      
      men4.add(jm12 = new JMenuItem("Look & Feel", new ImageIcon("Bookmarks24.gif")));
      jm12.setAccelerator(KeyStroke.getKeyStroke('F', Event.CTRL_MASK));
      
      men4.add(jm13 = new JMenuItem("Programmfarbe", new ImageIcon("Preferences24.gif")));
      jm13.setAccelerator(KeyStroke.getKeyStroke('P', Event.CTRL_MASK));
      
      
      // Menu Hilfe
      bar.add(men3 = new JMenu("Hilfe"));
      men3.setMnemonic(KeyEvent.VK_H);
      men3.add(jm8 = new JMenuItem("StecknOffice", new ImageIcon("TipOfTheDay.gif")));
      jm8.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
      
      men3.addSeparator();
      
      men3.add(jm9 = new JMenuItem("StecknSoft", new ImageIcon("TipOfTheDay.gif")));
      jm9.setAccelerator(KeyStroke.getKeyStroke('t', Event.CTRL_MASK));
      
      
//-------------------------Menu Aktionen------------------------//

      // Neu
      jm0.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm0) {
                wirklichloschen(); 
              }
          }
      });
      
      
      // Daten Einlesen
      jm1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source==jm1){
                Open();
          }
        }
      });
      
      
      // Datei Speichern
      jm2.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source==jm2){
                Save();
          }
        }
      });
      
      
      // Speichern unter
      jm3.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm3) {
                Save();
              }
          }
      
      });
      
      
      //Beenden
      jm4.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
                  if(source == jm4) {
                    System.exit(0);
                  }
        }
      });
      
      
      // Kopieren 
      jm5.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm5) {
                text.copy();
              }
          }
      });
      
      
      // Einfügen
      jm6.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm6) {
                text.paste();
              }
          }
      });
      
      
      // Ausschneiden
      jm101.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm101) {
                text.cut();
              }
          }
      });
      

      
      // Aktion Hilfe - StecknOffice  jm8
      jm8.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm8) {
                //info();
              }
          }
      });
      

      // Aktion Hilfe - StecknSoft   jm9
      jm9.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm9) {
               // info2();
              }
          }
      });
    
      
      // Aktion Datei - Drucken
      jm10.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm10) {
                dateiDrucken();
  
              }
          } 
      });


      
      // Aktion Format - Hintergrund
      jm11.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm11) {
                Component comp = (Component) e.getSource();
            	newColor = JColorChooser.showDialog(
                    null, "Wähle eine Farbe", comp.getBackground());
                text.setBackground(newColor);
              }
          }
      });
      
      
      // Aktion Design - Look and Feel
      jm12.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
              if(source == jm12) {
               		LaF la = new LaF();
               		la.setLocation (100, 100);
      		        la.setSize(260, 130); 
      			la.setVisible(true);    
              }
          }
      });
      
      
      // Aktion Desing - Programmfarben
      jm13.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm13) {
                Component com2 = (Component) e.getSource();
                newColor2 = JColorChooser.showDialog(
                  null, "Wähle eine Farbe", com2.getBackground());
                bar.setBackground(newColor2);
                men1.setBackground(newColor2);
                men2.setBackground(newColor2);
                men3.setBackground(newColor2);
                men4.setBackground(newColor2);
                men5.setBackground(newColor2);
                tool.setBackground(newColor2);
                toolbar.setBackground(newColor2);
                box3.setBackground(newColor2);
                box2.setBackground(newColor2);
                box1.setBackground(newColor2);
                vbox.setBackground(newColor2);
                hinweis.setBackground(newColor2);
                table.setBackground(newColor2);
              }
          }
      });
      
     
      
      // Aktion Format - Suchen
      jm17.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            if(source == jm17) {
              Suchdialog();
            }
          }
      });
      
      
      // Action Screenshot()
      jm18.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            if(source == jm18) {
              try {
                Screenshot();
              } catch (Exception en) {System.out.println("Error");}
            }
          }
      });
       
      
      // Action Format - Zeichen
      jm100.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
              if(source == jm100) {
                ZeichenF();
              }
          }
      }); 

  
//----------------------------------------------------------------//
//---------------------- Toolbar u. Box --------------------------//
//----------------------------------------------------------------//

      // Bar1
      icon1 = new ImageIcon("AlignRight24.gif");
      icon2 = new ImageIcon("Bold24.gif");
      icon3 = new ImageIcon("Italic24.gif");
      icon4 = new ImageIcon("AlignLeft24.gif");
      icon5 = new ImageIcon("AlignCenter24.gif");
      icon6 = new ImageIcon("Underline24.gif");
      icon7 = new ImageIcon("New24.gif");
      icon8 = new ImageIcon("Save24.gif");
      icon9 = new ImageIcon("Open24.gif");
      
      
      // Aktion hinzfügen = zen, ah, tesb

      
      
    // TOOLBAR !!!!                                 !!!!!!!!!
    toolbar = new JToolBar();

    toolbar.add(neu = new JButton(icon7));
    toolbar.add(op = new JButton(icon9));
    toolbar.add(spei = new JButton(icon8));
    toolbar.addSeparator();
      toolbar.add(b = new JButton(icon2));
      toolbar.add(a = new JButton(icon3));
      toolbar.add(unt = new JButton(icon6));
      toolbar.addSeparator();
      toolbar.add(zen = new JButton(icon4));
      toolbar.add(ah = new JButton(icon5));
      toolbar.add(testb = new JButton(icon1));
      toolbar.addSeparator();
      toolbar.add(schriftart = new JComboBox());
      toolbar.addSeparator();
      toolbar.add(comgrose = new JComboBox());
      toolbar.addSeparator();
      toolbar.add(farbe = new JComboBox());
      
      
      // Speichern
      spei.setToolTipText("Dokument speichern");
      spei.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                 if(source1 == spei) {
                  Save();          
                 }
          }
        });
      
      
 
      // neu
      neu.setToolTipText("Neues Dokument erstellen");
      neu.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                 if(source1 == neu) {
                  wirklichloschen();          
                 }
          }
        });
        
        
        // Öffnen
        op.setToolTipText("Neues Dokument Öffnen");
        op.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                 if(source1 == op) {
                  Open();          
                 }
          }
        });
        
      
      // a Button - Kursiv
      a.setToolTipText("Text wird kursiv");
      a.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                 if(source1 == a) {
                   style ^= Font.ITALIC;
                   updateFont();
                 }
          }
        });
        
        // b Button - FETT
        b.setToolTipText("Verändert die Stärke des Textes");
        b.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
              Object source1 = e.getSource();
                  if (source1 == b) {
                     style ^= Font.BOLD;
                     updateFont();
                  }
           }
        });
        
        // Unterstrichen  !!! muss noch gemacht werden
        unt.setToolTipText("Unterstreicht den Text");
        unt.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource(); 

                  
          }
        });
      
        // Button ZENtrieren
        zen.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
            if(source==zen) {
                  //styled.setParagraphAttributes(start,length, leftText, false);
              }
          }
        });
      
        
      schriftart.setToolTipText("Ändert die Schriftart");
      schriftart.setEditable(true);
      for(int no=0; no<schrift.length;++no)
              schriftart.addItem(schrift[no]);
      
      // Aktion Schriftart (JComboBox)      
      schriftart.addItemListener( new ItemListener(){
          public void itemStateChanged( ItemEvent e ) {
            updateFont();
          }
      });
      
        
      // Farbe
      farbe.setToolTipText("Ändert die Farbe");
      farbe.setEditable(true);
      
      for(int no=0; no<fontfarbe.length;++no)
              farbe.addItem(fontfarbe[no]);
              
      // Farbe - Aktion
      farbe.addItemListener( new ItemListener(){
          public void itemStateChanged( ItemEvent e ) {
            updateFont();
          }
      });
         
              
      // Größe
      comgrose.setToolTipText("Ändert die Größe");
      comgrose.setEditable(true);
      for(int no=0; no<grose.length;++no)
              comgrose.addItem(grose[no]);
              
      // Größe Aktion
      comgrose.addItemListener( new ItemListener(){
          public void itemStateChanged( ItemEvent e ) {
            updateFont();
          }
      });
              
        
      
      box1 = Box.createHorizontalBox();
      box1.add(toolbar);

      // box 2
      text = new JTextPane();
    JScrollPane ScrollPane1 = new JScrollPane(text);
    Dimension Size1 = new Dimension();
    Size1.width = 500;
      Size1.height = 970;
      text.setPreferredSize(Size1);
                 

      text.setFont(new Font(schrift[0],Font.PLAIN,15));
      box2 = Box.createHorizontalBox();
      box2.add(new JScrollPane(text));

      


      // box3
      
      JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
      DefaultMutableTreeNode top = new DefaultMutableTreeNode("Projekte");
      DefaultMutableTreeNode top1 = new DefaultMutableTreeNode("Schreiber");
      
      tree = new JTree(top);
        tree.getSelectionModel().setSelectionMode
                (TreeSelectionModel.SINGLE_TREE_SELECTION);
        //tree.addTreeSelectionListener(this);

        DefaultMutableTreeNode section = new DefaultMutableTreeNode("Konto");
        section.add(new DefaultMutableTreeNode("Anlegen"));
        section.add(new DefaultMutableTreeNode("Editieren"));
        section.add(new DefaultMutableTreeNode("Löschen"));

        top.add(section);

        section = new DefaultMutableTreeNode("Protokoll");
        section.add(new DefaultMutableTreeNode("Anlegen"));
        section.add(new DefaultMutableTreeNode("Editieren"));

        top.add(section);
        
        JScrollPane scroll = new JScrollPane(new JTree(top));
        

    
        JTable table = new JTable(new String[][]{{"","","",""},
              {"","","",""},{"","","",""},{"","","",""},{"","","",""}
              ,{"","","",""},{"","","",""},{"","","",""},{"","","",""}
              ,{"","","",""},{"","","",""},{"","","",""},{"","","",""}
              ,{"","","",""},{"","","",""},{"","","",""},{"","","",""}
              ,{"","","",""},{"","","",""},{"","","",""},{"","","",""}
              ,{"","","",""},{"","","",""}
              }, new String[]{"A","B","C","D"}); 
        
        
        JPanel lblPanel = new JPanel();
        lblPanel.setLayout(new GridLayout(1, 1)); 
        //JTable table = new JTable(rowData, columnNames);
        lblPanel.add(new JScrollPane(table));
        

        sp.setLeftComponent(scroll);
        sp.setRightComponent(lblPanel);

        Dimension minimumSize = new Dimension(150, 100);
               scroll.setMinimumSize(minimumSize);
               lblPanel.setMinimumSize(minimumSize);
               sp.setDividerLocation(150);
               sp.setPreferredSize(new Dimension(500, 400));
      
      

      
      box3 = Box.createVerticalBox();
      box3.add(new JScrollPane(sp));

      // Box4
      hinweis = new JLabel("Hier können Sie kleine Notizen erstellen");
      
      Box box4 = Box.createHorizontalBox();
      box4.add(hinweis);
      
      // Box5
      
      // ToolBar2 tool
      tool = new JToolBar();
      
      tool.add(playb = new JButton("StecknPlayer"));
      tool.addSeparator();
      tool.add(zeichen = new JButton("   Zeichen   "));
      tool.addSeparator();
      tool.add(RGB = new JButton("Mehr Farben"));
      
      
      // Mehr Farben Action
      RGB.setToolTipText("Hier können Sie mehr Farben auswählen");
      RGB.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Component comp = (Component) e.getSource();
          newColor = JColorChooser.showDialog(
                  null, "Wähle neue Farbe", comp.getBackground());
                  
                text.setFont( new Font( (String)schriftart.getSelectedItem(), style,
                  Integer.parseInt((String)comgrose.getSelectedItem() )));
                    
                text.setForeground(newColor);
          }
      });
      
      
      // Aktion StecknPlayer (playb)
      playb.setToolTipText("Startet den StecknPlayer");
      playb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          Object source1 = e.getSource();
                 if(source1 == playb) {
                  try {
            Runtime.getRuntime().exec("java Menutest");
          }
          catch(Exception en) {
            System.out.println("Fehler beim öffnen aufgetretten!");
          }
                  
          
                 }
        }
      });
      
      // Aktion Zeichen
      zeichen.setToolTipText("Hier können Sie Formatierungen vornehmen");
      zeichen.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            if(source == zeichen) {
              ZeichenF();
            }
          }
      });
      
      
      
      
      
      
      
      Box box5 = Box.createHorizontalBox();
      box5.add(tool);

      // box vertikal
      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    - gehört zu ZeichenP
   
   
   // Button Zeichen Frame  (ZeichenF) !!!!!!!!!!!!!!!!!!!!
   public void ZeichenF() {
    
      JFrame f = new JFrame("Zeichen");
      f.setResizable(false);
      f.setIconImage(new ImageIcon("Stop24.gif").getImage());
      f.setLocation(330,300);
        final JTabbedPane tPan = new JTabbedPane(JTabbedPane.RIGHT);
        
        JPanel p1 = new JPanel(), p2 = new JPanel(), p3 = new JPanel();
        Border bo = BorderFactory.createTitledBorder("Formatierungen");
        p1.setBorder(bo);
        
        // ComboBox
        p1.add(schriftart2 = new JComboBox());
          for(int no=0; no<schrift.length;++no)
                schriftart2.addItem(schrift[no]);
                    schriftart2.setEditable(true);
                      schriftart2.addItemListener(new ItemListener() {
                  public void itemStateChanged(ItemEvent e) {
                    text.setFont( new Font( (String)schriftart2.getSelectedItem(), style,
                        Integer.parseInt((String)comgrose.getSelectedItem() )));
                  }
                });
        p1.add(comgrose2 = new JComboBox());
          for(int no = 0; no<grose.length; ++no)
            comgrose2.addItem(grose[no]);
                comgrose2.setEditable(true);
                comgrose2.addItemListener(new ItemListener() {
                  public void itemStateChanged(ItemEvent e) {
                    text.setFont( new Font( (String)schriftart.getSelectedItem(), style,
                        Integer.parseInt((String)comgrose2.getSelectedItem() )));
                  }
                });   
        p1.add(far = new JButton("Farbe"));
          far.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent e) {
                Component com = (Component)e.getSource();
                  newColor = JColorChooser.showDialog(
                          null, "Schriftafarbe ändern", com.getBackground());
                          
              text.setFont( new Font( (String)schriftart.getSelectedItem(), style,
                  Integer.parseInt((String)comgrose.getSelectedItem() )));  
                text.setForeground(newColor);
              }
          });
              
        // Action zeichen - Hintergrundfarbe      
        p2.add(hint = new JButton("Hintergrundfarbe"));
        Border bo2 = BorderFactory.createTitledBorder("Hintergrund");
        p2.setBorder(bo2);
        
        hint.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Component com = (Component)e.getSource();
            newColor = JColorChooser.showDialog(
            null, "Schriftafarbe ändern", com.getBackground());   
              text.setBackground(newColor);
          }
        });
        
        Border bo3 = BorderFactory.createTitledBorder("Weitere Formatierungen");
        p3.setBorder(bo3);
        
        p3.add(radfett = new JCheckBox("Fett"));
        p3.add(radkursiv = new JCheckBox("Kursiv"));
        p3.add(radunterstrichen = new JCheckBox("Unterstreichen"));
        
        radfett.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
                if(source == radfett) {
                  style ^= Font.BOLD;
                  updateFont();
                }
          }
        });
        
        radkursiv.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource(); 
                if(source == radkursiv) {
                  style ^= Font.ITALIC;
                  updateFont();
                } 
          }
        });
        
        // Unterstrichen  !!! muss noch gemacht werden
        radunterstrichen.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              Object source = e.getSource(); 
                if(source == radunterstrichen) {

                  updateFont();
                } 
          }
        });
        
        tPan.addTab("Formatierungen", p1);
        tPan.addTab("Hintergrund", p2);
        tPan.addTab("weitere Fromat.", p3);
        tPan.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                System.out.println("Karte " + (tPan.getSelectedIndex() + 1)
           + " selektiert");
            }
        });
        
        f.getContentPane().add(tPan);
        f.setSize(320, 220);
      f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setVisible(true);
    
   } // ende ZeichenF


//-----------------------------------------------------------//
//---------------- Beginn Funktionen ------------------------//
//-----------------------------------------------------------//
   
   
   // Schriftart - Farbe - Größe
   public void updateFont(){
          text.setFont(new Font((String)schriftart.getSelectedItem(), style,
               Integer.parseInt((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;
            case 4: return newColor;
         }
         return null;
   }  // ende Schriftart - Farbe - Größe
   


//-----------------------------------------------------------------//
//------------------------ Drucken Methode ------------------------//
//-----------------------------------------------------------------//

  // zerlegen
  public void textZerlegen() {
    zeilen = new Vector<String>();
    
    String letztesToken = "";
    String text2 = text.getText();
    StringTokenizer t = new StringTokenizer(text2, "\n\r", true);
    
    while (t.hasMoreTokens()) {
      String zeile = t.nextToken();
      
      if(zeile.equals("\r"))
        continue;
        
      if(zeile.equals("\n") && letztesToken.equals("\n"));
        zeilen.add("");
        
      letztesToken = zeile;
      
      if(zeile.equals("\n"))
        continue;
        
      zeilen.add(zeile);
    }
  }
  
  public int print(Graphics pg, PageFormat pf, int seitennr) 
                throws PrinterException {
    Graphics2D pg2 = (Graphics2D) pg;
    pg2.translate(pf.getImageableX(), pf.getImageableY());
  
    Font f = text.getFont();
    pg2.setFont(f);
    FontMetrics fm = pg.getFontMetrics();
  
    if(druckAbfragen) {
      int seitenBreite = (int) pf.getImageableWidth();
      int seitenHoehe = (int) pf.getImageableHeight();
      int anzahlZeilen = zeilen.size();
      
      // Felder füllen
      zeilenHoehe = fm.getHeight();
      zeilenProSeite = Math.max(seitenHoehe/zeilenHoehe, 1);
      anzahlSeiten = (int) Math.ceil((double)anzahlZeilen
                    / (double)zeilenProSeite);
                    
      return Printable.NO_SUCH_PAGE;
    }             
    else {
      if (seitennr >= anzahlSeiten)
      return Printable.NO_SUCH_PAGE;
        
      int x = 0;
      int y = fm.getAscent();
    
      int zeilenIndex = zeilenProSeite * seitennr;
    
        while(zeilenIndex < zeilen.size() 
            && y < (int) pf.getImageableHeight()) {
          str = zeilen.get(zeilenIndex);
          pg2.drawString(str, x, y);
          y += zeilenHoehe;
          ++zeilenIndex;
        }
        
      return Printable.PAGE_EXISTS;
    }
  }
  
  // drucken
  public void dateiDrucken() {
    druckJob = PrinterJob.getPrinterJob();
    druckJob.setJobName("StecknOffice - "+aktDateiname+" drucken");
    druckJob.setCopies(1);
    
    PageFormat pf = druckJob.pageDialog(druckJob.defaultPage());
    
    textZerlegen();
    
    druckJob.setPrintable(this, pf);
    
    try {
      druckAbfragen = true;
      druckJob.print();
      
      Book buch = new Book();
      buch.append(this, pf, anzahlSeiten);
      druckJob.setPageable(buch);
      
      druckAbfragen = false;
      if(druckJob.printDialog())
        druckJob.print();
    }
    catch(Exception e) {
      JOptionPane.showMessageDialog(this, "Fehler beim Drucken"
          + e, "Druckfehler", JOptionPane.ERROR_MESSAGE);
    }
  } 
  
// ende dateiDrucken()
  

   // Öffnen
   public void Open() {
    int option = chooser.showOpenDialog(text);
    if(option == JFileChooser.APPROVE_OPTION) {
      File sf = chooser.getSelectedFile(); 
      try{
            FileReader fr = new FileReader(sf);
            text.read(fr,null);
        fr.close();
      }
      catch(IOException ea) {
            System.out.println("Probleme beim Öffnen oder Lesen von " + sf.getName());
        }
    }    
   }
   
   // Speichern - Speichern unter
   public void Save() {
      String schreiben;
       
        if(fc.showSaveDialog(cp)==0) {
            sf = fc.getSelectedFile();
            try{            
              out = new PrintWriter(new FileWriter(sf)); //Datei zum Schreiben öffnen
              schreiben = text.getText();
              out.println(schreiben);//Schreiben
              out.flush();//der Speicher wird gelehrt, damit die Datei völlig zu Ende geschrieben wird.
              out.close();//Schließen der Datei
            } 
            catch(Exception ex2){System.out.println(ex2);}  //Bei Fehlern werden diese in der Konsole ausgegeben     
        }
        
        else{// Modales Fenster
            JOptionPane.showMessageDialog(cp,"Keine Datei zum Speichern gewählt!",
            "SPEICHERN",JOptionPane.ERROR_MESSAGE);
        }
   }
   
      
      // abfragen neue datei
      public void wirklichloschen() {
        f = new JFrame();
    f.setIconImage(new ImageIcon("Save24.gif").getImage());
    f.setLocation(320,300);
      f.setTitle("Speichern ?");
      f.setResizable(false);
      f.setSize(new Dimension(445, 120));

      f.getContentPane().setLayout(null);

      JLabel label = new JLabel();
      label.setText("Möchten Sie diese Datei speichern ?");
      label.setBounds(new Rectangle(125, 15, 250, 29));
      f.add(label, BorderLayout.NORTH);



      ja = new JButton();
      ja.setBounds(new Rectangle(13, 51, 202, 25));
      ja.setText("Ja");
      this.getRootPane().setDefaultButton(ja);
      f.add(ja);

      nein = new JButton();
      nein.setBounds(new Rectangle(222, 51, 202, 25));
      nein.setText("Nein");
      f.add(nein);
      
      f.show();
          
          ja.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
              if(ja == source) {
                Save();
              }
            }
          });
     
          
          nein.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
              Object source = e.getSource();
              if(nein == source) {
                text.setText("");
                f.dispose();
              }
            }
          });
          
      } // ender wirklichlöschen
      
      
      
     public void pop(final JTextPane text) {

      final JPopupMenu x = new JPopupMenu();

      JMenuItem i1 = new JMenuItem("Cut");
      JMenuItem i2 = new JMenuItem("Copy");
      JMenuItem i3 = new JMenuItem("Paste");
      JMenuItem i4 = new JMenuItem("Select All");

      x.add(i1); x.add(i2); x.add(i3);
      x.addSeparator(); x.add(i4);

      i1.addActionListener(new ActionListener() {
        public void actionPerformed( ActionEvent e ) {
          text.cut();
        }
      });

      i2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          text.copy();
        }
      });

      i3.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          text.paste();
        }
      });

      i4.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          text.selectAll();
        }
      });

      text.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
          checkForTriggerEvent(e);
        }
      
        public void mouseReleased(MouseEvent e) {
          checkForTriggerEvent(e);
        }
      
        private void checkForTriggerEvent( MouseEvent e ) {
          if ( e.isPopupTrigger() )
            x.show( e.getComponent(), e.getX(), e.getY() );
        }
      });
  }
  
  
/*
  // String Suche
  protected void bearbeitenSuchen(int pos) {
    if(pos == 0) {
      eingabefeld.setLocation((getLocation().x + 100),
                  getLocation().y + 100);
      eingabefeld.setVisible(true);
    }
    
    String suchbegriff = eingabefeld.getSuchbegriff();
    
    if(suchbegriff == null)
      return;
      
    // Text zum Durchsuchen in String-Object speichern
    String text = text.getText();
    int index = text.indexOf(suchbegriff, pos);
    
    if(index == -1) {
      JOptionPane.showMessageDialog(null, "String nicht gefunden",
                "Meldung",JOptionPane.INFORMATION_MESSAGE);
      suchPosition = 0;
    } else {
      //String hervorheben
      text.grabFocus();
      text.setCaretPosition(index);
      text.moveCaretPosition(index + suchbegriff.length());
      suchPosition = index + suchbegriff.length();
    }
  } // ende bearbeitenSuchen
*/


  
  
  // Screenshot
  public void Screenshot() throws Exception {
    Thread.sleep( 2000 );
    
      BufferedImage bi = new Robot().createScreenCapture(
          new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
    
      OutputStream  out  = new FileOutputStream("c:/screenshot.bmp");
      JPEGCodec.createJPEGEncoder(out).encode(bi);
      out.close();
      
      JOptionPane.showMessageDialog(cp,"c:/screenshot.bmp",
        "Hinweis",JOptionPane.ERROR_MESSAGE);
        
  } // ende Screenshot
  
   
   
   
} // ende StecknFrame     !!!!!!!!!!!!!!!!!!!!!


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

Ist noch nicht das ende: LaF.java wird noch drangehängt
 
LaF.java


Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Enumeration;


public class LaF extends JFrame implements ItemListener {

   JCheckBox cb;
   ButtonGroup lafGroup = new ButtonGroup();
   UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();

   public LaF() {
      setTitle("Look-and-Feel Demo");

      // Zum Schliessen des JFrames wird eine neue Instanz der
      // externen Klasse WindowClosingAdapter registriert


      Container cp = getContentPane();
      setLayout(new GridLayout( 3, 1 ));

      // Fuer jedes installierte Look and Feel wird nun eine JCheckBox
      // erzeugt, ggf. selektiert, mit einem ItemListener versehen und
      // anschliessend dem Layout und der ButtonGroup hinzugefuegt
      for(int i=0, n=lafs.length; i<n; i++) {
         cb = new JCheckBox(lafs[i].getName());
         cp.add(cb);
         cb.setSelected(UIManager.getLookAndFeel().getName().equals(lafs[i].getName()));
         cb.putClientProperty("lnf name", lafs[i]);
         cb.addItemListener(this);
         lafGroup.add(cb);
      }



   }

   public void itemStateChanged(ItemEvent ie) {

      cb = (JCheckBox) ie.getSource();

      // Es werden nun die einzelnen Elemente der ButtonGroup
      // ueberprueft, ob sie der Ausloeser der Aktion waren
      Enumeration lafEnum = lafGroup.getElements();
      while(lafEnum.hasMoreElements()) {
         JCheckBox c = (JCheckBox) lafEnum.nextElement();
         if(cb == c) {
            JCheckBox c2 = (JCheckBox) ie.getSource();

            // Wenn eines der Elemente selektiert wurde,
            // soll versucht werden, das Look and Feel
            // aller Swing-Elemente zu veraendern
            if(c2.isSelected()) {
               UIManager.LookAndFeelInfo info = (UIManager.LookAndFeelInfo)c2.getClientProperty("lnf name");
               try {
                  UIManager.setLookAndFeel(info.getClassName());
                  SwingUtilities.updateComponentTreeUI(LaF.this);
               } catch(UnsupportedLookAndFeelException e) {
               } catch(ClassNotFoundException e) {
               } catch(InstantiationException e) {
               } catch(IllegalAccessException e) {
               }
            }
         }
      }

   }

   public static void main(String[] args) {
      LaF laf = new LaF();
      laf.setLocation (100, 100);
      laf.setSize(230, 130);
      laf.setVisible(true);
   }

}
 
hat keiner eine idee? werden elemente in einer Box auch verändert oder bleiben die im metal design?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben