(Letzten) 2 Fragen zu meiner JTable :)

BeneS

Grünschnabel
Hey folks,
1.
ich möchte nun in meiner JTable noch eine Option die eine zusätzlich Spalte einfügt und als Zeilennummerierung dient. Diese Spalte sollte auch nur 1/3 so breit sein, wie die anderen Spalten.Also in etwa so :

Code:
//Buttun im Menu wird gedrüückt
 if(e.getActionCommand().equals("Zeilennummerierung"))
{
//ZähleSpalten in table
int count=FileDialog.table.getRowCount();

Object newcolumn[] = new Object[count];

	for(int i=0;i<=count;i++)
		{
		 newcolumn[i]=""+(i+1);
                                           }
FileDialog.meins.addColumn("Zeile",newcolumn);
//Spaltengbreite festlegen		 		
int count1=FileDialog.table.getColumnCount();
System.out.println("Anzahl der Spalten "+count1);
FileDialog.table.getColumnModel().getColumn(count1).setPreferredWidth(15);
}
Auto_Resize ist OFF.
Egal welche Datei ich öffne, ich bekomme immer eine ArrayOutOfBoundsException :mad:
Wenn ich die letzten 3 Zeilen auskommentiere gehts. Aber ich möchte ja die bestimmte breite...
2.Ich möchte es irgendwie schaffen, komplette Zeile zu kopieren und am Ende wieder einfügen.

getSelectedRow aus JTable liefert mir ja nur den Index zurück, aber ich möchte ja den INhalt haben. Den würd ich dann als Vector speichern und mir insertRow() einfügen.. Aber ich hab keine Idee.Ihr vielleicht?

Wenn das o.g. funkionert bin ich fertigmit meim JTable... deshalb würd ich mich über Anregungen sehr freuen.

mfg

bene
 
Zu 1.
In der for Schleife muss die Bedingung heißen: i < count
Zu 2.
Benutze die getValueAt(int row, int column) von JTable um den Datenvector aufzubauen, denn den Zeilenidex hast Du ja.;)
 
Das funktioniert irgendwie nur bedingt,denn die Spalte ist jetzt immer genauso breit wie die anderen. und es kommt immer noch fehlermeldungen....
(SOrry) Die Spalte aber angezeigt. Es liegt alles an den letzten drei Zeilen :mad:
Code:
java.lang.ArrayIndexOutOfBoundsException: 3 >= 3
	at java.util.Vector.elementAt(Unknown Source)
at javax.swing.table.DefaultTableColumnModel.getColumn(Unknown Source)
	at FileDialog.showMyDialog(YACV.java:236)
	at Listener.actionPerformed(YACV.java:37)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
Wenn mich nicht alles täuscht, klemmts hier:
Code:
int count1=FileDialog.table.getColumnCount();
System.out.println("Anzahl der Spalten "+count1);
FileDialog.table.getColumnModel().getColumn(count1).setPreferredWidth(15);

Anzahl z.B. 10, aber Index von 0-9, aber Du greifst auf die 10 zu.
 
SUPER! :) jetzt gehts end cool. ICh hab jetzt aber leider noch zwei Probleme *nerv*

Hier mein Code:

Code:
//Button wir gedrückt
 if(e.getActionCommand().equals("Zeile Kopieren"))
 {
	 row = FileDialog.table.getSelectedRow();
	 count2=FileDialog.meins.getColumnCount();
	 for(int i=0;i<count2;i++)
                     {
	 OBJ[i]=FileDialog.table.getValueAt(row,i);
                       }
System.out.println("1.Wert ist "+OBJ[0]);
}

//Button wir gedrückt	 
if(e.getActionCommand().equals("Zeile Einfügen"))
 {
System.out.println("*Zeile einfügen* : 1.Wert = "+OBJ[0]);
FileDialog.meins.addRow(OBJ);		 	
 }
Beim ersten println spuckt er mir genau den Wert aus der in der zugehörigen Zelle steht.

Beim zweiten println(einfügen) spuckt er mir "null" aus.

Ich drücke erst "Zeile kopieren". Das und das Array wird aufgefüllt. Dann drücke ich "einfügen" und er fügt dann nur eine Zeile aus, in der nix steht (wg."null") wo liegt denn hier der Fehler?

Mein Betreuer meinte es wäre schön,wenn ich noch hinbekomme,dass es außerhalb von eclipse in einer exe file ausführbar wäre... Ich hab schon versucht eine batch file zu schreiben :

javac Pfad Table.java
java Pfad Table.java

nur leider sagt er dann : noClassDefFound. Classpath ist aber gesetzt...:confused:

Danke für Hilfestellungen.

MFg
bene
 
ich weiss der Thread ist schon ziemlich alt.
Aber wäre es möglich wenn man selbst darauf kommt warum es nicht funktioniert hat, die Lösung zu posten?! (Bezogen auf ganze Zeile kopieren!)

M.F.G. jal1976
 
Zurück