Look&Feel - Fenster starten

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!
 

bambi

Bekanntes Mitglied
du verwendest hier show() (Zeile 19). das ist deprecated. versuch's einfach mal mit

Code:
setVisible(true)
 
G

Gast

Gast
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?
 

bambi

Bekanntes Mitglied
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
 
G

Gast

Gast
wie kopiert man den text in einer dosconsole? das wäre zu viel um es abzuschreiben.
danke.
 
B

Beni

Gast
Da hats oben links ein Icon. Klick da drauf, und geh dann weiter zum Menü "Edit", da findest du alles.
 
G

Guest

Gast
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)
 

Illuvatar

Top Contributor
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.
 
G

Gast

Gast
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
 

bambi

Bekanntes Mitglied
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.
 
G

Gast

Gast
Wie meint ihr das jetzt mit der ArrayList?
lafGroup ist ja eine ButtonGroup.
 

bambi

Bekanntes Mitglied
Ooops, sorry - wusste ich nicht. Dann kannst Du das mit der ArrayList vergessen. Hast Du Deine ButtonGroup :!: mal gecheckt?
 
G

Gast

Gast
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!
 
G

Guest

Gast
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!
 
G

Gast

Gast
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?
 
G

Guest

Gast
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?
 
G

Gast

Gast
soll ich euch den ganzen quelltext senden? dass sind aber über 1000 zeilen...
 
G

Guest

Gast
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!
 
B

Beni

Gast
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)).
 
G

Guest

Gast
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
 
G

Guest

Gast
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);
   }

}
 
G

Gast

Gast
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.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Look and Feel Java Basics - Anfänger-Themen 3
H Look-and-feel für Einzelkomponenten? Java Basics - Anfänger-Themen 3
M Look and Feel installieren Java Basics - Anfänger-Themen 3
I Nimbus Look and Feel Java Basics - Anfänger-Themen 5
C Keine Icons bei Java Look&Feel Java Basics - Anfänger-Themen 5
W Look And Feel, wie ändern? Java Basics - Anfänger-Themen 10
C Windows Look and Feel unter Linux Java Basics - Anfänger-Themen 10
N Look & Feel Nimbus wofür? Java Basics - Anfänger-Themen 10
K Look and Feel Java Basics - Anfänger-Themen 3
F Look and Feel OS-L&F Java Basics - Anfänger-Themen 2
G Look and Feel zur Laufzeit ändern Java Basics - Anfänger-Themen 2
O Look and Feel - mein 1. Versuch Java Basics - Anfänger-Themen 7
P Java Look & Feel - Windows Media Player 11 Java Basics - Anfänger-Themen 5
S Frage zu Look and Feel changen. (Synthetica) Java Basics - Anfänger-Themen 4
G Mac OS Look&Feel unter Windows nutzen Java Basics - Anfänger-Themen 15
R Look & Feel wird nicht korrekt angezeigt Java Basics - Anfänger-Themen 9
E Variable von 1. Fenster an 2. Fenster übergeben. Java Basics - Anfänger-Themen 7
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
J Überprüfen ob ein Fenster offen ist? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
celta_vigo Konsolen-Fenster ist weg Java Basics - Anfänger-Themen 5
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
S JOptionPane komplett leeres Fenster Java Basics - Anfänger-Themen 4
A Eclipse-Fenster starten statt Konsoleausgabe Java Basics - Anfänger-Themen 2
A Fenster bleibt weiß Java Basics - Anfänger-Themen 7
O Fenster programmieren Java Basics - Anfänger-Themen 2
M JavaFX: Fenster bleibt weiß Java Basics - Anfänger-Themen 3
A Fenster programmieren Java Basics - Anfänger-Themen 1
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Best Practice DOS Fenster mit Befehlszeile (Lösung) Java Basics - Anfänger-Themen 2
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
das_leon Gesamtes Programm in einem Fenster Java Basics - Anfänger-Themen 1
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
A Fenster mit Button aufrufen Java Basics - Anfänger-Themen 3
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
W Es wird erst gezeichnet, wenn ich das Fenster vergrößere? Java Basics - Anfänger-Themen 20
K Interface Fenster mit 3 ComboBoxen und 1 Button Java Basics - Anfänger-Themen 13
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
I Fenster A soll Fenster B schliessen Java Basics - Anfänger-Themen 5
D Java Fenster blockiert ? Java Basics - Anfänger-Themen 5
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
A Popup-Fenster Java Basics - Anfänger-Themen 1
L Fenster auf Knopfdruck Java Basics - Anfänger-Themen 3
N Problem mit JOptionPane und Fenster-Fokus Java Basics - Anfänger-Themen 2
J ausgaben von der konsole in das fenster Java Basics - Anfänger-Themen 5
O Finally beim Fenster schliessen Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
P Eigenes Fenster erstellen Java Basics - Anfänger-Themen 5
M Input/Output Text auf Fenster zeichen Java Basics - Anfänger-Themen 2
T Zu viele Fenster - HILFE! Java Basics - Anfänger-Themen 5
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
llabusch Fenster per Button verschieben Java Basics - Anfänger-Themen 5
llabusch Fenster um x Pixel verschieben Java Basics - Anfänger-Themen 4
P Window Builder Reiter im Fenster erstellen Java Basics - Anfänger-Themen 7
S Java Fenster Java Basics - Anfänger-Themen 2
D (zwei) Fenster mit unterschiedlicher Befüllung Java Basics - Anfänger-Themen 11
A JAVA Fenster in ein PDF Konvertieren Java Basics - Anfänger-Themen 1
A Erkennung eines Button im aktiven Fenster Java Basics - Anfänger-Themen 2
B Variable im Fenster anzeigen lassen? Java Basics - Anfänger-Themen 2
S Fenster ist zu groß Java Basics - Anfänger-Themen 8
O GUI: Eigene Fenster "Form"? Java Basics - Anfänger-Themen 13
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
E Fehlermeldung und Fenster wird nicht mehr angezeigt Java Basics - Anfänger-Themen 12
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
N Java Programm im CMD Fenster öffnen, wie? Java Basics - Anfänger-Themen 17
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
tuttle64 Keine Umlaute im Dos Fenster Java Basics - Anfänger-Themen 12
J Button nimmt das komplette Fenster ein?! Java Basics - Anfänger-Themen 5
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
Athena Schlichtes Fenster mit Windowskomponenten Java Basics - Anfänger-Themen 3
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
A Login Fenster Java Basics - Anfänger-Themen 3
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
Z GUI-Fenster leeren Java Basics - Anfänger-Themen 5
M Erste Schritte Probleme mit Fenster Schließen Java Basics - Anfänger-Themen 6
J ordentliche Fenster Java Basics - Anfänger-Themen 17
J Problem beim Fenster Java Basics - Anfänger-Themen 4
Z Login Fenster Java Basics - Anfänger-Themen 7
K Aus JFrame-Fenster SuM-Fenster öffnen geht nicht! Java Basics - Anfänger-Themen 8
T Client-Fenster bei Aufruf unvollständig Java Basics - Anfänger-Themen 12
O Größeres Fenster als angegeben?! Java Basics - Anfänger-Themen 2
J Eltern-Fenster ermitteln Java Basics - Anfänger-Themen 2
M Ausklappbares Fenster bei grafischem Taschenrechner Java Basics - Anfänger-Themen 2
V Fenster wird nicht mittig platziert Java Basics - Anfänger-Themen 3
P gui fenster nur einmal aufrufen Java Basics - Anfänger-Themen 5
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
J Werte ins neue Fenster übertragen Java Basics - Anfänger-Themen 6
S Fenster richtig schließen Java Basics - Anfänger-Themen 8
M Einfacher Fenster-Ablauf Java Basics - Anfänger-Themen 5
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben