# JFileChooser



## siroFranz (15. Dez 2006)

Hallo,

bei mir will sich der FileChooser einfach nicht öffnen, hab schon alles ausprobiert (wahrscheinlich zu müde)   

```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Image_Show extends JFrame
{
    JButton btnadd;
    JList imagelist;
    JLabel imagelabel;
    JFileChooser bildauswahl;
    
    public Image_Show()
    {
        this.setSize(500, 550);
        this.setTitle("Image_Show");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container behaelter = getContentPane();
        this.getContentPane().setLayout(null);
        
        this.btnadd = new JButton("add");
        this.imagelist = new JList();
        this.imagelabel = new JLabel();
        this.bildauswahl = new JFileChooser();
        
        behaelter.add(btnadd);
        behaelter.add(imagelist);
        behaelter.add(imagelabel);
        behaelter.add(bildauswahl);
        
        this.btnadd.setBounds(5, 10, 60, 25);
        this.imagelist.setBounds(5, 50, 200, 400);
        this.imagelabel.setBounds(250, 50, 230, 250);
        
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == btnadd)
        {
            int pfad = bildauswahl.showOpenDialog(this);
            if(pfad == JFileChooser.APPROVE_OPTION)
            {
            }
        }
    }
}
```


----------



## The_S (15. Dez 2006)

Deine Klasse muss noch den ActionListener implementieren und anschließend brauchst du noch die Zeile


```
btnadd.addActionListener(this);
```

in deinem Konstruktor.


----------



## siroFranz (15. Dez 2006)

funktioniert leider net

Gruß


----------



## The_S (15. Dez 2006)

doch


----------



## siroFranz (15. Dez 2006)

klappt doch sorry


----------



## siroFranz (15. Dez 2006)

Bins nochma, wie mach ich das den jetzt, wenn das ausgwählte bild im label dargestellt werden soll ?
Gruß



```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Image_Show extends JFrame implements ActionListener
{
    int pfad;
    JButton btnadd = new JButton("add");
    JList imagelist = new JList();
    JLabel imagelabel = new JLabel();
    JFileChooser bildauswahl = new JFileChooser();
    
    public Image_Show()
    {
        this.setSize(500, 550);
        this.setTitle("Image_Show");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container behaelter = getContentPane();
        this.getContentPane().setLayout(null); 
        
        behaelter.add(btnadd);
        behaelter.add(imagelist);
        behaelter.add(imagelabel);
        behaelter.add(bildauswahl);
        
        this.btnadd.setBounds(5, 10, 60, 25);
        this.imagelist.setBounds(5, 50, 200, 400);
        this.imagelabel.setBounds(250, 50, 230, 250);
        
        btnadd.addActionListener(this);
        
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == btnadd)
        {
            this.pfad = bildauswahl.showOpenDialog(this);
        }
    }
}
```


----------



## The_S (15. Dez 2006)

du holst dir mit JFileChooser#getSelectedFile den Pfad zum Bild und lädst es dann via JLabe#setIcon in dein JLabel. Evtl. brauchste danach noch n repaint und/oder validate.


----------



## siroFranz (16. Dez 2006)

So ähnlich oder ?
Versteh nicht ganz , warum da  -Icon icon- steht ? "public void setIcon(Icon icon)"


```
imagelabel.setIcon(bildauswahl.getSelectedFile());
```

So vllt irgendwie ?


```
imagelabel.setIcon(paintIcon(CENTER_ALIGNMENT, graphics(), 230, 250),  bildauswahl.getSelectedFile());
```

krieg immer einen error weiß nicht mehr weiter.

Gruß


----------



## siroFranz (16. Dez 2006)

hallo ??


----------



## dieta (16. Dez 2006)

Aller (leider auch nicht so) Guten dinge sind drei:
1. Du kannst nicht erwaerten, dass hier ständig ein Experten-Team sitzt, nur um deine Fragen zu beantworten. Da braucht man halt auch manchmal eben etwas Gedult.
2. da steht "Icon icon" im Methodenheader, weil dort ein Icon als parameter initialisiert wird, das den Namen "icon" bekommt. Dort könnte auch genau so gut "Icon bla" oder "Icon irgendwas" stehen.
3. Was für eine Exception/Was für einen Error bekommst du?


----------



## siroFranz (16. Dez 2006)

ja klar hab ja auch Geduld, möchte aber weiterkommen   

Meldung ist:

connot resolve symbol = method graphics()


----------



## dieta (16. Dez 2006)

Und der Code zu dieser Fehlermeldung?
Ich versuch's mal:
Du versuchst die Methode graphics() von irgendetwas aufzurufen, dieses etwas hat aber keine Methode graphics().
Kann es sein, dass du die Methode getGraphics() meinst?


----------



## siroFranz (16. Dez 2006)

public void setIcon(Icon icon)   {in der api unter JLabel)

Die Methode möchte ich ja einbinden, die das Icon das beim JFileChooser ausgewählt wurde in dem JLabel anzeigt.


----------



## The_S (18. Dez 2006)

Jordie hat gesagt.:
			
		

> hallo ??



Net so ungeduldig! Bezahl mir nen festen Stundensatz, dann kannste auch erwarten dass de schnell von mir Hilfe bekommst. Ansonsten musste halt warten bis ich mal wieder online gehe oder sich jemand anderes deinen Thread durchliest :roll: .

Zu deinem Problem:


```
deinLabel.setIcon(new ImageIcon(filechooser.getSelectedFile());
```


----------



## siroFranz (19. Dez 2006)

krieg immer die Meldung "cannot resolve symbol - constructor imageIcon (java.io file)"

Gruß


----------



## The_S (20. Dez 2006)

ImageIcon wird groß geschrieben. Du kennst das API ?


----------



## siroFranz (21. Dez 2006)

logo kenn ich das API

hab den code eingefügt 
	
	
	
	





```
imagelabel.setIcon(new ImageIcon(bildauswahl.getSelectedFile()));
```
aber krieg halt die Meldung wie genannt, korriegeiere "ImageIcon". So stand es in der Fehlermeldung .

Gruß


----------



## The_S (21. Dez 2006)

Sry, ImageIcon benötigt einen String, kein File.


```
imagelabel.setIcon(new ImageIcon(bildauswahl.getSelectedFile().getAbsolutePath()));
```

Hast du ImageIcon importiert?


----------



## siroFranz (21. Dez 2006)

ja hab javax.swing importiert, läuft auch jetzt.   
,aber wäre gut wenn du mir den code nochmal erklären könntest ?

Gruß


----------



## The_S (22. Dez 2006)

Naja, steht eigentlich alles da .

Du hast ein JLabel (imageLabel) diesem kannst du ein Image mit der Methode setIcon zuweißen. Den Pfad zum Icon bekommst du mit bildauswahl.getSelectedPath(). Jetzt brauchst du natürlich noch eine Componente, die ein Image repräsentiert und dieses Anhand eines Pfades laden kann. Das ist ImageIcon. Und da ImageIcon wie gesagt nichts mit einem File anfangen kann, sondern einen String benötigt lässt du dir das File, dass du mit bildauswahl.getSelectedPath() bekommen hast durch die Methode getAbsolutePath() in einen String umwandeln, welcher den Pfad zum Bild enthält. Das wars eigentlich schon.

Jetzt klarer?


----------



## siroFranz (22. Dez 2006)

alles klar. Soweit bin ich nu , krieg aber dann den Pfad des Bildes bzw. Namen nicht in die JList. Hab in nem Buch gelesen, dass man das über Vektoren irgendwie machen muss ?

Gruß


```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Image_Show extends JFrame implements ActionListener
{
    int auswahl;
    String[] elemente          = {"mutter", "vater", "bruder", "schwester", "tante", "onkel", "oma", "opa"}; 
    JButton btnadd             = new JButton("add");
    JButton btndelete          = new JButton("delete");
    JButton btnforward         = new JButton("forward");
    JButton btnback            = new JButton("back");
    JList imagelist            = new JList(elemente);
    JLabel imagelabel          = new JLabel();
    JFileChooser bildauswahl   = new JFileChooser();
   
    public Image_Show()
    {
        this.setSize(500, 480);
        this.setTitle("Image_Show");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container behaelter = getContentPane();
        this.getContentPane().setLayout(null);
        this.getContentPane().setBackground(Color.WHITE);
        this.imagelist.setSelectionBackground(new java.awt.Color(238,233,191));
        this.imagelist.setBackground(new java.awt.Color(255,250,205));
        this.imagelist.setForeground(new java.awt.Color(139,121,94));
        this.imagelist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        behaelter.add(this.btnadd);
        behaelter.add(this.imagelist);
        behaelter.add(this.imagelabel);
        behaelter.add(this.bildauswahl);
        behaelter.add(this.btndelete);
        behaelter.add(this.btnforward);
        behaelter.add(this.btnback);
       
        this.btnadd.setBounds(5, 10, 60, 25);
        this.imagelist.setBounds(5, 50, 200, 400);
        this.imagelabel.setBounds(250, 50, 230, 250);
        this.btndelete.setBounds(80, 10, 100, 25);
        this.btnback.setBounds(220, 425, 100, 25);
        this.btnforward.setBounds(330, 425, 100, 25);
       
        this.btnadd.addActionListener(this);
        this.btndelete.addActionListener(this);
        this.btnback.addActionListener(this);
        this.btnforward.addActionListener(this);
        
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == btnadd)
        {
            this.auswahl = this.bildauswahl.showOpenDialog(this);
            this.imagelabel.setIcon(new ImageIcon(this.bildauswahl.getSelectedFile().getAbsolutePath()));
        }
        if(e.getSource() == btndelete)
        {
          
        }
        if(e.getSource() == btnback)
        {

        }
        if(e.getSource() == btnforward)
        {
            
        }
    }
}
```


----------



## The_S (22. Dez 2006)

deklariere zusätzlich noch ein DefaultListModel als Klassenvariable. Beim initialisieren der JList übergibst du dieses DefaultListModel der JList im Konstruktor. Anschließend kannst du über DefaultListModel#add Objekte hinzufügen.


----------



## siroFranz (22. Dez 2006)

ok probiers aus


----------



## siroFranz (22. Dez 2006)

ok habs . Also wenn man die Liste während der Laufzeit verändern möchte, braucht man den DefaultListModel immer und wenn die Liste statisch ist reicht das, wenn man die Elemente in einem String speichert oder?

Aber ich hab jetzt nur DefaultListModel deklariert und dann bei ..... new JList( "ein neues Objekt erzeugt) , {alles im Klassenbereich}.
und es ging, hab das jetzt nix in den Konstruktor geschrieben, muss das sein ?



```
public int auswahl;
    public DefaultListModel list;
    public String[] elemente          = {"mutter", "vater", "bruder", "schwester", "tante", "onkel", "oma", "opa"}; 
    public JButton btnadd             = new JButton("add");
    public JButton btndelete          = new JButton("delete");
    public JButton btnforward         = new JButton("forward");
    public JButton btnback            = new JButton("back");
    public JList imagelist            = new JList(list = new DefaultListModel());
    public JLabel imagelabel          = new JLabel();
    public JFileChooser bildauswahl   = new JFileChooser();
```



```
if(e.getSource() == btnadd)
        {
            this.auswahl = this.bildauswahl.showOpenDialog(this);
            this.imagelabel.setIcon(new ImageIcon(this.bildauswahl.getSelectedFile().getAbsolutePath()));
            list.addElement(this.bildauswahl.getSelectedFile());
        }
```


Gruß


----------



## The_S (22. Dez 2006)

Natürlich hast du das in den Konstruktor geschrieben ... weiß jetzt net was du meinst!?


----------



## siroFranz (22. Dez 2006)

der Konstruktor ist doch der, der den gleichen Namen hat wie die Klasse. Aber da hab ich jetzt nix reingeschrieben .
aber ist ja auch nicht so wichtig .
Jetzt muss das prog das Object welches eingefügt wird, selektieren.
Nur mit der Methode setSelectedIndex(1) läuft das nicht ganz.


----------



## The_S (22. Dez 2006)

Andere Klassen haben auch einen Konstruktor und ich hab gemeint, du sollst das in den Konstruktor von deiner JList schreiben, was du getan hast  . 

setSelectedIndex sollte es eigentlich machen. Wie viel Objekte hast du denn in der JList?


----------



## siroFranz (22. Dez 2006)

Das variiert ja, jenachdem wie viele Bilder reingeladen werden über den JFileChosser (wo du mir ja auch geholfen hast   ). Am Besten wäre es wenn der immer das, welches reingeladen wird,selektiert und dann über den "next bzw. forward" Button ein Bild nach vorne/hinten springen kann und dieses dann anzeigt.
Bei Bedarf kann ich dir den Code auch nochma schicken. Ich versuch das nochma zu lösen.
Gruß


----------



## The_S (23. Dez 2006)

jlist.setSelectedIndex(defaultlistmodel.getSize() - 1);


----------



## Leroy42 (23. Dez 2006)

*Fanfaren"

Hier der Gewinner im Wettbewerb

_"Kürzestes Paradoxon 2006"_



			
				Jordie hat gesagt.:
			
		

> korriegeiere



 :applaus:  :applaus:  :applaus:


----------



## siroFranz (23. Dez 2006)

lol  :lol:  :lol:


----------



## The_S (23. Dez 2006)

Jordie hat gesagt.:
			
		

> lol  :lol:  :lol:



Und weiter? Haste mit meinem Post was anfangen können?


----------



## siroFranz (23. Dez 2006)

ja aufjeden Fall passiert da etwas, aber noch nicht das richitge.
Also hab das mal eingebaut , wenn ich dann 3Bilder reinlade und eins auswähle, (egal ob das erste oder zweite) springt der immer direkt zum dritten. Ja und beim dritten passiert dann gar nichts.
Bin ma eben in dem API unterwegs. Such mal nach ner Selektiermethode und sowas ähnlichem wie ner "next()-Methode", sowas hatten wir ma im Unterricht in ner selbstgebauten Gui.

Gruß


----------



## The_S (23. Dez 2006)

Ja, das bewirkt mein Code auch, weil du wolltest, dass immer das zuletzt eingefügt gleich selektiert wird. Das macht natürlich keinen Sinn diesen Code in die stateChanged (oder wie auch immer die Methode vom ListSelectionListener heißt) zu schreiben. Dieser Code sollte nachdem ein Bild neu hinzugefügt wurde eingebaut werden. Für einen next und previouse Button kannst du die einfach


```
jlist.setSelectedIndex(jlist.getSelectedIndex + 1);
```

machen. Bzw. -1 für den Previouse - Button


----------



## siroFranz (23. Dez 2006)

So hab das mit dem forward Button jetzt auch hinbekommen.
Meine Frage ist nun ob das nicht einfacher geht und ob JList keine Methode anbietet um die Größe herauszufinden ?


```
int index = this.imagelist.getSelectedIndex();
            if((index == -1) || (list.getSize() == 1))
            {
                 Toolkit.getDefaultToolkit().beep();
            }
            if(index > -1)
            {
                 this.imagelist.setSelectedIndex(index+1);
            }
            if(index+1 == this.list.getSize())
            {
                this.imagelist.setSelectedIndex(0);
            }
```

Gruß


----------



## The_S (24. Dez 2006)

? Warum größe Rausbekommen? Hab ich dir doch geschriebn  :shock: ... 
	
	
	
	





```
defaultlistmodel.getSize()
```
 !? Und wie soll das überhaupt deinen Code vereinfachen? Geht net einfacher!


----------



## siroFranz (24. Dez 2006)

Das mit dem getSize() geht doch nur bei ner dynamischen Liste. Wie würde man das den machen, wenn man kein DefaultListModel drin hat.
Das mit dem wechseln haben wir ja nun, aber wie zeigt der dann immer das nächste bzw. letzte Bild an?

Gruß


----------



## The_S (24. Dez 2006)

JList#getModel#getSize für die Größe. Um die Bilder anzuzeigen musst du in deinem ListSelectionListener abfragen welcher Eintrag selektiert wurde. Und jenachdem welcher Eintrag selektiert ist das dementsprechende Bild laden.


----------



## siroFranz (24. Dez 2006)

erstmal schöne Weihnachten
 :!:  :!: 
(aber kriegs net hin  :roll:  :roll: )

Gruß


----------



## The_S (24. Dez 2006)

Kann ich auch nix machen ...

(im Klartext: Was kriegst du nicht hin?)


----------



## siroFranz (25. Dez 2006)

mal ganz kurz anderes Problem. Bin gerade dabei ein Menü einzubauen, aber der verschiebt das nach unten !
Kannste ja mal bei dir gucken. Hier ist der code !


```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Image_Show extends JFrame implements ActionListener
{
    public int auswahl;
    public DefaultListModel list;
    public JPanel panel               = new JPanel();
    public JMenuBar menueleiste       = new JMenuBar();
    public JButton btnadd             = new JButton("add");
    public JButton btndelete          = new JButton("delete");
    public JButton btndeleteAll       = new JButton("delete all");
    public JButton btnforward         = new JButton("forward");
    public JButton btnback            = new JButton("back");
    public JList imagelist            = new JList(list = new DefaultListModel());
    public JLabel imagelabel          = new JLabel();
    public JFileChooser bildauswahl   = new JFileChooser();
    public JLabel meldung             = new JLabel(new ImageIcon("pfeil.jpg"));
   
    public Image_Show()
    {
        this.setSize(500, 550);
        this.setTitle("Image_Show");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container behaelter = getContentPane();
        this.getContentPane().setLayout(null);
        this.getContentPane().setBackground(Color.WHITE);
        this.menueleiste.add(setMenue());
        this.setJMenuBar(menueleiste);
        this.imagelist.setSelectionBackground(new java.awt.Color(238,233,191));
        this.imagelist.setBackground(new java.awt.Color(255,250,205));
        this.imagelist.setForeground(new java.awt.Color(139,121,94));
        this.imagelist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        this.meldung.setHorizontalAlignment(this.meldung.LEFT);
        ImageIcon icon = new ImageIcon("example.png");
        this.imagelabel.setIcon(icon);
        this.meldung.setText("example");
        
        behaelter.add(this.menueleiste);
        behaelter.add(this.btnadd);
        behaelter.add(this.imagelist);
        behaelter.add(this.imagelabel);
        behaelter.add(this.bildauswahl);
        behaelter.add(this.btndelete);
        behaelter.add(this.btndeleteAll);
        behaelter.add(this.btnforward);
        behaelter.add(this.btnback);
        behaelter.add(this.meldung);
       
        this.btnadd.setBounds(5, 50, 60, 25);
        this.imagelist.setBounds(5, 90, 200, 400);
        this.imagelabel.setBounds(250, 90, 230, 250);
        this.btndelete.setBounds(80, 50, 100, 25);
        this.btndeleteAll.setBounds(195, 50, 100, 25);
        this.btnback.setBounds(220, 465, 100, 25);
        this.btnforward.setBounds(330, 465, 100, 25);
        this.meldung.setBounds(310, 50, 170, 25);

        this.btnadd.addActionListener(this);
        this.btndelete.addActionListener(this);
        this.btndeleteAll.addActionListener(this);
        this.btnback.addActionListener(this);
        this.btnforward.addActionListener(this);
        
        this.setVisible(true);       
    }
    public JMenu setMenue()
    {
        JMenu datei = new JMenu("Datei");
        return datei;
    }
    public static void main (String[] args)
    {
        new Image_Show();
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == btnadd)
        {
            this.meldung.setText("");
            this.auswahl = this.bildauswahl.showOpenDialog(this);
            this.bildauswahl.setDialogTitle("Bilddatei öffnen");
            if(this.auswahl == this.bildauswahl.APPROVE_OPTION)
            {
                 this.imagelabel.setIcon(new ImageIcon(this.bildauswahl.getSelectedFile().getPath()));
                 this.list.addElement(this.bildauswahl.getSelectedFile().getName());
                 this.imagelist.setSelectedIndex(this.imagelist.getSelectedIndex()+1);  
                 this.meldung.setText("Vorgang erfolgreich");
            }
            if((this.auswahl == this.bildauswahl.CANCEL_OPTION) || (this.auswahl == this.bildauswahl.ERROR_OPTION))
            {
                this.meldung.setText("Kein Bild ausgewählt.");
            }
        }
        if(e.getSource() == btndelete)
        {
            this.meldung.setText("");
            int index = this.imagelist.getSelectedIndex();
            
            if(index == -1)
            {
                Toolkit.getDefaultToolkit().beep();
                this.meldung.setText("Keine Bilddatei vorhanden.");
            }
            else
            {
                this.list.removeElementAt(index);  
                this.imagelist.setSelectedIndex(index+1);
            }                    
        }
        if(e.getSource() == btndeleteAll)
        {
            this.meldung.setText("");
            
            if(this.imagelist.getSelectedIndex() == -1)
            {
                Toolkit.getDefaultToolkit().beep();
                this.meldung.setText("Keine Bilddatei vorhanden.");
            }
            if(this.imagelist.getSelectedIndex() == 0)
            {
                Toolkit.getDefaultToolkit().beep();
                this.meldung.setText("delete-Button benutzen.");
            }
            if(this.imagelist.getSelectedIndex() > 0)
            {
                this.list.removeAllElements();
                this.meldung.setText("Vorgang erfolgreich");
            }
        }
        if(e.getSource() == btnback)
        {
            int index = this.imagelist.getSelectedIndex();
            
            if((index == -1) || (list.getSize() == 1))
            {
                Toolkit.getDefaultToolkit().beep();
            }
            if(index > -1)
            {
                this.imagelist.setSelectedIndex(index-1);
            }
            if(index == 0)
            {
                this.imagelist.setSelectedIndex(this.list.getSize()-1);
            }            
        }
        if(e.getSource() == btnforward)
        {
            int index = this.imagelist.getSelectedIndex();
            
            if((index == -1) || (list.getSize() == 1))
            {
                 Toolkit.getDefaultToolkit().beep();
            }
            if(index > -1)
            {
                 this.imagelist.setSelectedIndex(index+1);
            }
            if(index+1 == this.list.getSize())
            {
                this.imagelist.setSelectedIndex(0);
            }
        }
    }
}
```


----------



## The_S (25. Dez 2006)

Die Zeile


```
behaelter.add(this.menueleiste);
```

ist daran schuld. Mach die raus, ist sowieso unsinnig!


----------



## siroFranz (25. Dez 2006)

ja klappt, aber warum muss man das nicht adden ?


----------



## André Uhres (26. Dez 2006)

Jordie hat gesagt.:
			
		

> ja klappt, aber warum muss man das nicht adden ?


wegen setJMenuBar(menueleiste);


----------



## siroFranz (29. Dez 2006)

kapiert
Wie ermittelt man wenn man dem JFileChooser speichern möchte, den Namen der Datei ?

Gruß


----------



## André Uhres (29. Dez 2006)

JFileChooser#getSelectedFile


----------



## siroFranz (29. Dez 2006)

hab das mit dem fileReader() gemacht. 
Also das Einlesen beim Öffnen und Speichern.
Den Dateinamen hab ich ja jetzt.
Aber wie mach ich das mit dem setFilter(), dass man nur "txt" oder "jpg" Dateien lesen kann ?


----------



## André Uhres (29. Dez 2006)

```
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
            public boolean accept(File f) {
                String name = f.getName().toLowerCase();
                if(name.endsWith(".txt") || name.endsWith(".jpg")){
                    return true;
                }
                return false;
            }
            public String getDescription() {
                return ".txt und .jpg Dateien";
            }
        });
```


----------



## Guest (2. Jan 2007)

So bin bei der Schriftart mittlerweile.



```
if(action==fett)
        {
            textfeld.setFont(new Font(schrift.getSelectedIndex(), Font.PLAIN, textfeld.getFont().getSize()));
        }
```

Das klappt leider nicht !

Gruß


----------



## siroFranz (2. Jan 2007)

Leider hab ich den Beitrag als Gast geschrieben und kann ihn nicht editieren. Problem ist schon gelöst !
So bin bei der Schriftart mittlerweile.

Man ja die Schriftart mit Font.BOLD, PLAIN, ITALIC einstellen, *aber wie unterstreicht man den Text.* und krieg bei dir JTextArea den ScrollPane nicht rein. 
So poste einfach mal den ganzen code, anstatt da jetzt alles einzelnd rauszukopieren.
:lol:  :lol: 


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*; 

public class Editor extends JFrame implements ActionListener
{
    JTextArea textfeld   = new JTextArea(300,200);
    JScrollPane pane     = new JScrollPane(textfeld);
    JPanel panel         = new JPanel();
    JMenuBar menubar     = new JMenuBar();
    JMenu data;
    JMenuItem open;
    JMenuItem save;
    JMenuItem saveAs;
    JMenuItem print;
    JMenuItem close;
    JMenuItem neu;
    JMenu edit;
    JMenuItem copy;
    JMenuItem paste;
    JMenuItem cut;
    JMenuItem mark;
    JMenu view;
    JMenuItem preview;
    JMenuItem zoomIn;
    JMenuItem zoomOut;
    JMenu ensertion;
    JMenuItem hyperlink;
    JMenuItem grafic;
    JMenu format;
    JMenu font;
    JMenuItem size;
    JMenuItem art;
    JMenu table;
    JMenuItem insertTable;
    JMenu insert;
    JMenu window;
    JMenuItem newWindow;
    JFileChooser oeffnen    = new JFileChooser();
    JFileChooser speichern  = new JFileChooser();
    String[ ] schriftart    = {"Arial", "Times New Roman", "Serif", "SansSerif", "Monospaced"};
    JComboBox schrift       = new JComboBox(schriftart);
    String[ ] schriftgroeße = {"8", "9", "10", "11", "12", "14", "16", "18", "20", "22", "24", "26"};
    JComboBox fontsize      = new JComboBox(schriftgroeße);
    JButton fett;
    JButton kursiv;
    JButton unterstrichen;
    JButton kopieren;
    JButton einfuegen;
    JButton ausschneiden;
    JButton speicher;
    JButton oeffne;
    JButton drucke;
    JButton newDocument;
    JButton verweiß;
    JButton tabelle;
    JToolBar toolBar;
    JToolBar toolBar2;
    Object action;
    File dateiName;
    
    public Editor()
    {
        //Fenster
        this.setSize(500, 500);
        this.setTitle("Editor");
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        Container cp = getContentPane();       
        this.panel.setLayout(null);
        panel.add(pane);
        panel.add(textfeld);
        cp.add(panel);
        //panel.add(this.textfeld);
        this.textfeld.setTabSize(5);
        this.textfeld.setLineWrap(true);
        this.textfeld.setWrapStyleWord(true);
        this.textfeld.setBounds(0, 60, 500, 440);
        //Toolbar -und tipps
        this.setToolBar();    
        this.setTooltips();
        //Menü
        this.menubar.add(createBarEntryData());
        this.menubar.add(createBarEntryEdit());
        this.menubar.add(createBarEntryView());
        this.menubar.add(createBarEntryEnsertion());
        this.menubar.add(createBarEntryFormat());
        this.menubar.add(createBarEntryTable());
        this.menubar.add(createBarEntryWindow());
        setJMenuBar(this.menubar);
        
        this.setVisible(true);
    }
    public static void main (String[ ] args)
    {
        new Editor();
    }
    //Menü
    public JMenu createBarEntryData()
    {
        this.data   = new JMenu("Datei");
        this.neu    = new JMenuItem("Neu", new ImageIcon("neuesDokument.jpg"));
        this.open   = new JMenuItem("Öffnen", new ImageIcon("open.png"));
        this.save   = new JMenuItem("Speichern", new ImageIcon("speichern.jpg"));
        this.saveAs = new JMenuItem("Speichern unter...");
        this.print  = new JMenuItem("Drucken");
        this.close  = new JMenuItem("Beenden"); 
        this.data.add(this.neu);
        this.data.add(this.open);
        this.data.addSeparator();
        this.data.add(this.save);
        this.data.add(this.saveAs);
        this.data.addSeparator();
        this.data.add(this.print);
        this.data.addSeparator();
        this.data.add(this.close);
        this.neu.setAccelerator(KeyStroke.getKeyStroke('N', Event.ALT_MASK));
        this.open.setAccelerator(KeyStroke.getKeyStroke('O', Event.ALT_MASK));
        this.save.setAccelerator(KeyStroke.getKeyStroke('S', Event.ALT_MASK));
        this.print.setAccelerator(KeyStroke.getKeyStroke('D', Event.ALT_MASK));
        this.open.addActionListener(this);
        this.save.addActionListener(this);
        this.close.addActionListener(this);
        this.neu.addActionListener(this);
        this.saveAs.addActionListener(this);
        this.print.addActionListener(this);
        
        return this.data;
    }
    public JMenu createBarEntryEdit()
    {
        this.edit  = new JMenu("Bearbeiten");
        this.copy  = new JMenuItem("Kopieren", new ImageIcon("kopieren.jpg"));
        this.paste = new JMenuItem("Einfügen", new ImageIcon("einfuegen.jpg"));
        this.cut   = new JMenuItem("Ausschneiden", new ImageIcon("ausschneiden.jpg"));
        this.mark  = new JMenuItem("Alles markieren");
        this.edit.add(this.copy);
        this.edit.add(this.paste);
        this.edit.add(this.cut);
        this.edit.addSeparator();
        this.edit.add(this.mark);
        this.paste.setAccelerator(KeyStroke.getKeyStroke('E', Event.CTRL_MASK));
        this.copy.setAccelerator(KeyStroke.getKeyStroke('K', Event.CTRL_MASK));
        this.cut.setAccelerator(KeyStroke.getKeyStroke('A', Event.CTRL_MASK));
        this.mark.setAccelerator(KeyStroke.getKeyStroke('M', Event.CTRL_MASK));
        this.copy.addActionListener(this);
        this.paste.addActionListener(this);
        this.cut.addActionListener(this);
        this.mark.addActionListener(this);
        
        return this.edit;
    }
    public JMenu createBarEntryView()
    {
        this.view    = new JMenu("Ansicht");
        this.preview = new JMenuItem("Vorschau", new ImageIcon("vorschau.jpg"));
        this.zoomIn  = new JMenuItem("Zoom +");
        this.zoomOut = new JMenuItem("Zoom -");
        this.view.add(this.preview);
        this.view.addSeparator();
        this.view.add(this.zoomIn);
        this.view.add(this.zoomOut);
        this.preview.setAccelerator(KeyStroke.getKeyStroke('P', Event.CTRL_MASK));
        this.preview.addActionListener(this);
        this.zoomIn.addActionListener(this);
        this.zoomOut.addActionListener(this);
        
        return this.view;
    }
    public JMenu createBarEntryEnsertion()
    {
        this.ensertion = new JMenu("Einfügen");
        this.hyperlink = new JMenuItem("Hyperlink einfügen", new ImageIcon("hyperlink.jpg")); 
        this.grafic    = new JMenuItem("Grafik einfügen", new ImageIcon("grafik.jpg"));
        this.ensertion.add(this.grafic);
        this.ensertion.addSeparator();
        this.ensertion.add(this.hyperlink);
        this.hyperlink.setAccelerator(KeyStroke.getKeyStroke('V', Event.SHIFT_MASK));
        this.grafic.setAccelerator(KeyStroke.getKeyStroke('G', Event.SHIFT_MASK));
        this.grafic.addActionListener(this);
        
        return this.ensertion;
    }
    public JMenu createBarEntryFormat()
    {
        this.format = new JMenu("Format");
        this.font   = new JMenu("Schrift");
        this.size   = new JMenuItem("Schriftgröße", new ImageIcon("schriftart.jpg"));
        this.art    = new JMenuItem("Schriftart");
        this.format.add(this.font);
        this.font.add(this.size);
        this.font.add(this.art);
        this.font.addActionListener(this);
        this.size.addActionListener(this);
        
        return this.format;
    }
    public JMenu createBarEntryTable()
    {
        this.table       = new JMenu("Tabelle");
        this.insert      = new JMenu("Einfügen");
        this.insertTable = new JMenuItem("Tabelle", new ImageIcon("tabelle.jpg"));
        this.insert.add(this.insertTable);
        this.table.add(this.insert);
        this.insertTable.setAccelerator(KeyStroke.getKeyStroke('T', Event.SHIFT_MASK));
        this.insertTable.addActionListener(this);

        return this.table;
    }
    public JMenu createBarEntryWindow()
    {
        this.window   = new JMenu("Fenster");
        this.newWindow= new JMenuItem("neues Fenster", new ImageIcon("fenster.jpg"));
        this.window.add(this.newWindow);
        this.newWindow.setAccelerator(KeyStroke.getKeyStroke('F', Event.ALT_MASK));
        this.newWindow.addActionListener(this);
        
        return this.window;
    }
    //ToolBar
    public void setToolBar()
    {
        //erste Toolbar
        this.toolBar = new JToolBar();
        this.toolBar.add(this.newDocument    = new JButton(new ImageIcon("neuesDokument.jpg")));
        this.toolBar.add(this.oeffne         = new JButton(new ImageIcon("open.png")));
        this.toolBar.add(this.speicher       = new JButton(new ImageIcon("speichern.jpg")));
        this.toolBar.add(this.drucke         = new JButton(new ImageIcon("drucken.jpg")));
        this.toolBar.add(this.ausschneiden   = new JButton(new ImageIcon("ausschneiden.jpg")));
        this.toolBar.add(this.kopieren       = new JButton(new ImageIcon("kopieren.jpg")));
        this.toolBar.add(this.einfuegen      = new JButton(new ImageIcon("einfuegen.jpg")));
        this.toolBar.add(this.verweiß        = new JButton(new ImageIcon("hyperlink.jpg")));
        this.toolBar.add(this.tabelle        = new JButton(new ImageIcon("tabelle.jpg")));
        this.panel.add(this.toolBar);
        this.toolBar.setBounds(0 , 0, 500, 25);
        this.kopieren.addActionListener(this);
        this.ausschneiden.addActionListener(this);
        this.einfuegen.addActionListener(this);
        this.oeffne.addActionListener(this);
        this.speicher.addActionListener(this);
        this.newDocument.addActionListener(this);
        this.tabelle.addActionListener(this);
        this.verweiß.addActionListener(this);
        
        //Zweite Toolbar
        this.toolBar2 = new JToolBar();
        this.toolBar2.add(this.schrift);
        this.toolBar2.add(this.fontsize);
        this.toolBar2.add(this.fett          = new JButton(new ImageIcon("bold.jpg")));
        this.toolBar2.add(this.kursiv        = new JButton(new ImageIcon("kursiv.jpg")));
        this.toolBar2.add(this.unterstrichen = new JButton(new ImageIcon("unterstrichen.jpg")));
        this.panel.add(this.toolBar2);
        this.toolBar2.setBounds(175, 30, 300, 25);
        this.fett.addActionListener(this);
        this.kursiv.addActionListener(this);
        this.unterstrichen.addActionListener(this);
        this.schrift.addActionListener(this);
        this.fontsize.addActionListener(this);
    }
    //Tooltips
    public void setTooltips()
    {
        
        this.oeffne.setToolTipText("Öffnen");
        this.speicher.setToolTipText("Speichern");
        this.newDocument.setToolTipText("neues Dokument");
        this.drucke.setToolTipText("Drucken");
        this.ausschneiden.setToolTipText("Ausschneiden");
        this.kopieren.setToolTipText("Kopieren");
        this.einfuegen.setToolTipText("Einfügen");
        this.verweiß.setToolTipText("Hyperlink");
        this.tabelle.setToolTipText("Tabelle");
        this.fett.setToolTipText("Fett");
        this.kursiv.setToolTipText("Kursiv");
        this.unterstrichen.setToolTipText("Unterstrichen");
    }
    // Action- Events
    public void actionPerformed(ActionEvent e)
    {
        this.action = e.getSource();
        
        if((action==open) || (action==oeffne))
        {
            int chooser=oeffnen.showOpenDialog(this);
            byte zeichen;
            char buchstabe;
            String text="";
            try
            {
                dateiName = this.oeffnen.getSelectedFile();
                FileInputStream in = new FileInputStream(dateiName);
                do
                {
                    zeichen = (byte)in.read();
                    textfeld.setText(zeichen+" ");
                    text +=(char)zeichen;       
                }while(zeichen !=-1);
                in.close();
                textfeld.setText(text);
            }
            catch(Exception ex1)
            {
            }
        }
        if((action==save) || (action==speicher))
        {
            int chooser=speichern.showSaveDialog(this);
            dateiName=this.speichern.getSelectedFile();
            String text= textfeld.getText();
            try
            {
                FileOutputStream out = new FileOutputStream(dateiName);
                for(int i=0; i<=text.length(); i++)
                {
                    out.write((byte)text.charAt(i));
                }
                out.close();
            }
            catch(Exception ex2)
            {
            }
        }
        if((action==neu) || (action==newDocument))
        {
            textfeld.setText("");
        }
        if((action==this.copy) || (action==this.kopieren))
        {
            this.textfeld.copy();
        }
        if((action==this.paste) || (action==this.einfuegen))
        {
            this.textfeld.paste();
        }
        if((action==this.cut) || (action==this.ausschneiden))
        {
            this.textfeld.cut();
        }
        if(action==this.mark)
        {
            this.textfeld.selectAll();
        }
        if(action==this.close)
        {
            this.setVisible(false);
            System.exit(0);
        }
        if(action==this.print)
        {
            
        }
        if(action==this.hyperlink)
        {
            
        }
        if(action==newWindow)
        {
            new Editor();
        }
        if(action==this.size)
        {

        }
        if(action==fett)
        {
            int index = schrift.getSelectedIndex();
            String schrift = Integer.toString(index);
            textfeld.setFont(new Font(schrift, Font.BOLD, textfeld.getFont().getSize()));
        }
        if(action==kursiv)
        {
            int index = schrift.getSelectedIndex();
            String schrift = Integer.toString(index);
            textfeld.setFont(new Font(schrift, Font.ITALIC, textfeld.getFont().getSize()));
        }
        if(action==unterstrichen)
        {
            int index = schrift.getSelectedIndex();
            String schrift = Integer.toString(index);
            textfeld.setFont(new Font(schrift, Font.PLAIN, textfeld.getFont().getSize()));
        }
        if(action==schrift)
        {
            int index = schrift.getSelectedIndex();
            String schrift = Integer.toString(index);
            textfeld.setFont(new Font(schrift, Font.PLAIN, textfeld.getFont().getSize()));
        }
        if(action==fontsize)
        {
            Object schritt1 = this.fontsize.getSelectedItem();
            String schritt2 = String.valueOf(schritt1);
            int groeße      = Integer.parseInt(schritt2);
            
            Object art         = this.schrift.getSelectedItem();
            String schrift     = String.valueOf(art);
            textfeld.setFont(new Font(schrift, Font.PLAIN, groeße+5));
        }
        if(action==zoomIn)
        {
            int index = schrift.getSelectedIndex();
            String schrift = Integer.toString(index);
            textfeld.setFont(new Font(schrift, Font.PLAIN, textfeld.getFont().getSize()+5));
        }
        if(action==zoomOut)
        {
            int index = schrift.getSelectedIndex();
            String schrift = Integer.toString(index);
            textfeld.setFont(new Font(schrift, Font.PLAIN, textfeld.getFont().getSize()-5));
        }
    }
}
```

Gruß


----------



## The_S (2. Jan 2007)

Du darfst das textfeld nicht nochmal adden sondern nur dein JScrollPane.


----------



## Guest (2. Jan 2007)

dann zeigt der das textfeld aber nicht mehr an ?


----------



## The_S (2. Jan 2007)

doch. Einfach nur das JScrollPane dem Container adden.


----------



## siroFranz (2. Jan 2007)

Ja habs.
Problem: hatte mit textfeld.setBounds noch die Ausrichtung gesetzt, hab textfeld mit dem ScrollPane ersetzt und schon gings. :wink:  :wink: 

Gruß


----------



## Guest (3. Jan 2007)

Wie kann man auf den ausgewähltem Wert in einem JSpinner herausfinden ?
Gruß


----------



## The_S (3. Jan 2007)

Hier findest du die Lösung. Und mal ganz so nebenbei hat das schon lange nichts mehr mit dem Ursprünglichen Topic zu tun  :roll:  :noe:


----------



## Guest (3. Jan 2007)

Ja, aber für alles ne neue topic zu öffnen, sieht auch nicht so schön aus.


----------



## The_S (3. Jan 2007)

doch  . Anderes Thema => anderes Topic. Wenn jemand die Forensuche benutzt, genau dein Problem hat, dann findet er die Lösung nicht, weil er sich erst duch massen an posts in einem einzigen Thread kämpfen muss


----------



## siroFranz (4. Jan 2007)

jverständlich


----------

