# JTable in eine JTextArea?



## siroFranz (4. Jan 2007)

Hallo,

suche eine Möglichkeit eine Tabelle in eine JTextArea zu setzen.
Gruß


----------



## Beni (4. Jan 2007)

Hallo

Viel Glück
Gruss



.
.
.

Tabelle = JTable?

Mit einer JTextArea dürfte das nicht so einfach sein, aber mit einem JTextPane geht das sehr schnell (der Einfachheit halber ein Beispiel mit einem Button):

```
public class Demo {
    public static void main( String[] args ) throws Exception{
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        JTextPane pane = new JTextPane();
        frame.getContentPane().add( new JScrollPane( pane ));
        
        Document doc = pane.getDocument();
        
        SimpleAttributeSet set = new SimpleAttributeSet();
        StyleConstants.setComponent( set, new JButton( "Ich bin auch eine Tabelle" ));
        
        doc.insertString( 0, "Blabla", new SimpleAttributeSet());
        doc.insertString( doc.getLength(), "unsichtbar", set );
        
        frame.pack();
        frame.setVisible( true );
    }
}
```


----------



## Faebz (4. Jan 2007)

Was soll das für eine Tabelle sein?

Du solltest wohl auf jedenfall JTextPane verwenden...


----------



## Faebz (4. Jan 2007)

da war jemand anderes viel schneller.. Mein post war überflüssig


----------



## siroFranz (4. Jan 2007)

Ne ne eine Jtable.
aber wie krieg ich den in ne JTextPane in ein Bild rein ?

```
int auswahl = oeffnen.showOpenDialog(this);
            this.textfeld.insertIcon(new ImageIcon("oeffnen.getSelectedFile().getAbsoluthPath()"));
```
Edit: klammern waren überflüssig

Gruß


----------



## siroFranz (4. Jan 2007)

wenn ich hier die Zeilen und Spalten auswähle und die Tabelle dann in den JPanel setze, zeigt der die Tabelle erst an, wenn ich das Fenster vergrößere.



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

public class Tabelle extends JFrame implements ActionListener
{
    Object activ; 
    JLabel zeile                            = new JLabel("Anzahl der Zeilen: ");
    JLabel spalte                           = new JLabel("Anzahl der Spalten: ");
    JSpinner za                             = new JSpinner();
    JSpinner sa                             = new JSpinner();
    JPanel panel                            = new JPanel();          
    JButton ok                              = new JButton("OK");
    JButton abbrechen                       = new JButton("Abbrechen");
    JButton vorschau                        = new JButton("Vorschau");
    JTable tabelle;
    int spalten;
    int zeilen;
    
    public Tabelle()
    {
        this.setTitle("Tabelle");
        this.setLocation(100, 100);
        this.setSize(300,300);
        Container cp = getContentPane();
        this.panel.setLayout(new GridLayout(4, 2));
        this.panel.add(this.zeile);
        this.panel.add(this.za);
        this.panel.add(this.spalte);
        this.panel.add(this.sa);
        this.panel.add(this.ok);
        this.panel.add(this.abbrechen);
        this.panel.add(this.vorschau);
        //this.panel.add(this.panel2);
        cp.add(this.panel);
        
        this.ok.addActionListener(this);
        this.abbrechen.addActionListener(this);
        this.pack();
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {      
        if(e.getSource() == this.ok)
        {
            Object spaltenanzahl  = this.sa.getValue();
            String spaz           = String.valueOf(spaltenanzahl);
            this.spalten          = Integer.parseInt(spaz);
            Object zeilenanzahl   = this.za.getValue();
            String zeaz           = String.valueOf(zeilenanzahl);
            this.zeilen           = Integer.parseInt(zeaz);
            this.tabelle  = new JTable(this.spalten, this.zeilen);
            this.panel.add(this.tabelle);
        }
        if(e.getSource() == this.abbrechen)
        {
           this.setVisible(false);
        }
    }
}
```
Gruß


----------



## Guest (6. Jan 2007)

gut '?


----------



## André Uhres (6. Jan 2007)

```
if(tabelle!=null)panel.remove(tabelle);
            tabelle  = new JTable(zeilen, spalten);
            panel.add(tabelle);
            panel.revalidate();
```
Oder:

```
if(tabelle==null){
                tabelle  = new JTable(zeilen, spalten);
                panel.add(tabelle);
                panel.revalidate();
            }else{
                tabelle.setModel(new DefaultTableModel(zeilen, spalten));
            }
```


----------



## Guest (6. Jan 2007)

klappt perfekt :lol:


----------



## Guest (6. Jan 2007)

Wie kriegt man den eine Tabelle in ein JEditorPane() , find da keine Methode?


----------



## André Uhres (6. Jan 2007)

Man kann von der JTable ein Icon machen und das ins JTextPane tun.


----------



## Guest (6. Jan 2007)

Wie geht den sowas und warum so umständlich ?


----------



## André Uhres (7. Jan 2007)

Naja, ich war wohl auf dem Holzweg, Beni hat oben schon die Lösung gezeigt.


----------



## Guest (7. Jan 2007)

ja wozu gibt den dann den JEditorPane und wie kann man Schrift unterstreichen finden nur BOLD,PLAIN und ITALIC.


----------



## siroFranz (12. Jan 2007)

wie kann man bei einer JTable die Größe verändern. weil wenn ich die einfüge, übernimmt der immer die ganze breite des textfeldes ?

Gruß


----------



## André Uhres (12. Jan 2007)

setMaximumSize


----------



## siroFranz (13. Jan 2007)

ne krieg das damit nicht hin


----------



## André Uhres (13. Jan 2007)

Jordie hat gesagt.:
			
		

> ne krieg das damit nicht hin


Bei mir geht's. Code?


----------



## siroFranz (13. Jan 2007)

ist der code, der fügt den die Tabelle in der Hauptklasse ein. Aber die Größe verändert sich wie schon gesagt, nicht.


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

public class Tabelle extends JFrame implements ActionListener
{
    JLabel zeile                            = new JLabel("Anzahl der Zeilen: ");
    JLabel spalte                           = new JLabel("Anzahl der Spalten: ");
    JSpinner za                             = new JSpinner();
    JSpinner sa                             = new JSpinner();
    JPanel panel                            = new JPanel();   
    JButton ok                              = new JButton("OK");
    JButton abbrechen                       = new JButton("Abbrechen");
    JTable tabelle;
    int spalten;
    int zeilen;
    Editor editor;
    
    public Tabelle(Editor editor)
    {
        this.setTitle("Tabelle");
        this.editor=editor;
        this.setLocation(100, 100);
        this.setSize(240, 140);
        Container cp = getContentPane();
        this.panel.setLayout(null);
        this.panel.add(this.zeile);
        this.panel.add(this.za);
        this.panel.add(this.spalte);
        this.panel.add(this.sa);
        this.panel.add(this.ok);
        this.panel.add(this.abbrechen);
        cp.add(this.panel);
        this.zeile.setBounds(5, 5, 120, 25);
        this.za.setBounds(150, 5, 80, 25);
        this.spalte.setBounds(5, 45, 120, 25);
        this.sa.setBounds(150, 45, 80, 25);
        this.ok.setBounds(5, 80, 70, 25);
        this.abbrechen.setBounds(80, 80, 100, 25);
        this.ok.addActionListener(this);
        this.abbrechen.addActionListener(this);
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {    
        if(e.getSource() == this.ok)
        {
            Object spaltenanzahl  = this.sa.getValue();
            String spaz           = String.valueOf(spaltenanzahl);
            this.spalten          = Integer.parseInt(spaz);
            Object zeilenanzahl   = this.za.getValue();
            String zeaz           = String.valueOf(zeilenanzahl);
            this.zeilen           = Integer.parseInt(zeaz);
            this.editor.textfeld.insertComponent(this.tabelle = new JTable(this.zeilen, this.spalten));
            this.sa.setValue(new Integer(0));
            this.za.setValue(new Integer(0));
            this.setVisible(false);
        }
        if(e.getSource() == this.abbrechen)
        {
           this.setVisible(false);
        }
    }
}
```

Gruß


----------



## André Uhres (13. Jan 2007)

Jordie hat gesagt.:
			
		

> ist der code, der fügt den die Tabelle in der Hauptklasse ein. Aber die Größe verändert sich wie schon gesagt, nicht...


Du bist lustig, wo ist denn da "setMaximumSize" ? Oder bin ich jetzt schon blind  :shock:


----------



## siroFranz (13. Jan 2007)

lol


----------



## André Uhres (13. Jan 2007)

Jordie hat gesagt.:
			
		

> lol


Ist das alles was du dazu zu sagen hast?


----------



## siroFranz (14. Jan 2007)

ja kann mit dem 
	
	
	
	





```
setMaximumSize
```
 leider nicht viel anfangen.

Gruß


----------



## André Uhres (14. Jan 2007)

table.setMaximumSize(new Dimension(300,100));


----------



## siroFranz (14. Jan 2007)

ja, aber man soll die während der Laufzeit verändern können die Größe der Tabelle?


----------



## André Uhres (14. Jan 2007)

siroFranz hat gesagt.:
			
		

> ja, aber man soll die während der Laufzeit verändern können die Größe der Tabelle?


Ist doch kein Widerspruch.


----------



## siroFranz (16. Jan 2007)

man soll die sozusagen im nachhinein verändern können wie in z.B. openOffice


----------



## André Uhres (16. Jan 2007)

siroFranz hat gesagt.:
			
		

> man soll die sozusagen im nachhinein verändern können wie in z.B. openOffice


Erklär das doch bitte für die, die "OpenOffice" nicht kennen.


----------



## siroFranz (17. Jan 2007)

So hab extra mal eben das gute alte Paint ausgepackt. Müsste eigentlich jetzt klar werden, was ich meine.
Nochmal ganz kurz, füge eine Tabelle ein (ohne bestimmte Größe) und die Größe soll dann nach dem Einfügen verändert werden.







Gruß


----------



## siroFranz (18. Jan 2007)

gut


----------

