# Int aus JSpinner auslesen und Tabelle erstellen



## rei0d (23. Jan 2013)

Guten Abend Community,

ich soll ausgehend von einem JSpinner eine Tabelle erstellen und der Kopf(header) der Tabelle soll je nach Eingabe veränderbar sein. Der Inhalt des Kopfes soll so aussehen:
xi xi-1 xi-2... x0
(zb: x3 x2 x1 x0)
Das will ich mit der for-Schleife in der Application() Funktion realisieren, bisher funktioniert es aber nicht so wie ich mit das gedacht habe, entweder verlangt Eclipse, dass ich header[] = null setze, oder es treten andere Fehler auf. Habt ihr einen Vorschlag?
ps: alle nicht relevanten Prozeduren habe ich mal weggelassen.

```
package logikminimierung;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;


public class Application extends JFrame implements ActionListener {
	private static final long serialVersionUID = 17L;

	Integer init = new Integer(1);
	Integer min = new Integer(0);
	Integer max = new Integer(100);
	Integer step = new Integer(1);
	SpinnerNumberModel num = new SpinnerNumberModel(init, min, max, step);
	JSpinner numSpin = new JSpinner(num);
	JSpinner funktionenSpin = new JSpinner(num);
	SpinnerNumberModel model = (SpinnerNumberModel) numSpin.getModel();
	int vars = model.getNumber().intValue();

public Application() {


		String[] header[] = null; // das sind die Spaltenköpfe
		String[][] werte = null;  // die Nullen und Einsen

		
		for (int i = 0; i <= Integer.valueOf(num.getValue().toString()).intValue(); i++) {
			//Hier sollen dem Feld header[] die Strings: ("x" + i) hinzugefügt werden
		}
		System.out.println(header);                      //Testausgabe des Headers

		DefaultTableModel tableModel = new DefaultTableModel(werte, header);
		JTable truthTable = new JTable(tableModel);
		DefaultTableCellRenderer renderer = (DefaultTableCellRenderer) truthTable
				.getDefaultRenderer(Object.class);
	}


}
```


----------



## Timothy Truckle (23. Jan 2013)

rei0d hat gesagt.:


> entweder verlangt Eclipse, dass ich header[] = null setze,


Nein, 
Eclipse verlangt dass Du die Variable initialisierst. Dass wird zwar mit 
	
	
	
	





```
=null
```
 erreicht, ist aber die schlechteste aller Möglichkeiten.



rei0d hat gesagt.:


> oder es treten andere Fehler auf.


Welche?



rei0d hat gesagt.:


> Habt ihr einen Vorschlag?


Mach's richtig! 



rei0d hat gesagt.:


> [JAVA=32]		String[] header[] = null; // das sind die Spaltenköpfe
> String[][] werte = null;  // die Nullen und Einsen[/code]


Warum nicht so:[JAVA=32]		String[] spaltenKoepfe[] = new String[/*wert aus dem JSpinner*/];
		String[][] nullenUndEinsen = new String[/*wert aus dem JSpinner*/,/*wert aus dem JSpinner*/];  [/code]Ich gehe einfach mal davon aus, dass das 2dimensionale Array quadratisch sein soll...

BTW: wenn der Kommentar stimmt könnte man sich überlegen, das 2.Array vom Typ [JAPI]Integer[/JAPI] zu deklarieren...



rei0d hat gesagt.:


> [JAVA=36]		for (int i = 0; i <= Integer.valueOf(num.getValue().toString()).intValue(); i++) {
> //Hier sollen dem Feld header[] die Strings: ("x" + i) hinzugefügt werden
> }[/code]


solche Schleifen können auch rückwärts laufen...




rei0d hat gesagt.:


> [JAVA=36]		System.out.println(header);                      //Testausgabe des Headers[/code]


Ist es immer noch nicht Allgemeinwissen, dass das bei Arrays nicht wie erwartet funktioniert?

bye
TT


----------



## rei0d (23. Jan 2013)

Danke erstmal für die schnelle Antwort. Meine Schleife sieht jetzt so aus:

```
for (int i = Integer.valueOf(num.getValue().toString()).intValue(); i == 0; i--) {
			header[i] = "x" + i;	//header füllen
		}
```
Wäre das erstmal richtig?

alternativ:

```
SpinnerNumberModel num1 = new SpinnerNumberModel(init, min, max, step);
	JSpinner numSpin = new JSpinner(num1);
	SpinnerNumberModel num2 = new SpinnerNumberModel(init, min, max, step);
	JSpinner funktionenSpin = new JSpinner(num2);
	SpinnerNumberModel model = (SpinnerNumberModel) numSpin.getModel();
	int vars = model.getNumber().intValue();
.
.
.
private void fill() {
.
.
.
for (int i = vars; i == 0; i--) {
			header[i] = "x" + i; // header füllen
		}
```


----------



## Timothy Truckle (23. Jan 2013)

rei0d hat gesagt.:


> Danke erstmal für die schnelle Antwort. Meine Schleife sieht jetzt so aus:
> 
> ```
> for (int i = Integer.valueOf(num.getValue().toString()).intValue(); i == 0; i--) {
> ...


Fast. bis auf die [JAPI]ArrayIndexOutOfBoundsException[/JAPI], die hier fliegen wird.

bye
TT


----------

