JTable: editListener oder sowas

  • Themenstarter Themenstarter Roar
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

Roar

Gast
Hallo,
ich hoffe jemand kann mri dabei helfen, hmm..
ich hab hier meiner JTable und so, und der stehen daten ( doch wirklich :lol: ) und am ende steht eine zahl, die aber nur für da sprogramm relevant ist, und dem user unsichtbar sein soll. das klappt auch mit meinem CellRenderer, aber wenn ich jetzt auf eine Zelle klicke um sie zu editieren sieht man sie 🙁
ich hab jetz versucht einen TableCellEditor einzubinden, funktoiniert aber nicht. gibts irgendeinen listener für die JTable oder sowas mit dem ich beim editieren einer zelle den wert, sprich das erste zeichen unsichtbar machen kann?

danke
 
unsichtbar denk ich nicht - du kannst aber im TableModel angeben, welche Zellen editierbar sein sollen:
Code:
setEditable(int row, int col)
oder so.

Vielleicht dann in Kombination...

Aber warum schreibst du überhaupt dann die Zahl rein, wenn sie nur programmintern ist ???:L
 
nee die zellen sollen alle editierbar sein.
ich schreib die zahl da rein, weil sie dem cellRenderer sagt welche hintergrund und vordergrundfarbe die zelle hat.
haste ne bessere idee?
 
ist die Zelle fest (also immer die letzte Zelle unten rechts) ?

Im TableModel hast du ja auch die Methode setValueAt(int row, int col) --> wenn es nun die entsprechende Zeile ist schreibst du einfach nichts rein.

Trotzdem bin ich verwirrt du kannst doch auch im CellRenderer den Wert setzen (in der setValue Methode) - also über setFont() bzw. setText() z.B.. D.h. du kannst im Renderer abfragen, ob der Wert ne Zahl ist (oder dein Wert) dementsprechend setzt du die entsprechenden Werte....
 
jajaa das is ja auch alles kein problem, ich hab das erste zeichen schon verschwinden lassen in meinem cellrenderer.. das problem ist, dass die zahl auftaucht wenn ich die zelle editieren. verstanden oder screenshot?
die frage ist jetzt: wie kann ich den wert der zelle beim editieren verändern, sprich die erste zahl rausnehmen. wenn ich nen CelLEditor einbinde, kommt bei mir nur mist raus ???:L :cry:
 
weiß nicht, ob ich es verstanden habe:

Code:
class CrossWordTableRenderer extends DefaultTableCellRenderer {
        public void setValue(Object value) {
	String val = (String)value;		
	setForeground(Color.BLACK);
			
	try {
		Integer.parseInt(val);
		setFont(new Font(ConstantValues.FONTFAMILY, Font.BOLD, 8));
                                setText("");
	}
	catch(NumberFormatException e) {
		setFont(new Font(ConstantValues.FONTFAMILY, Font.BOLD, 10));
                                setText(val);
	}
	
	if(!val.equals("")) {
		setBorder(new LineBorder(Color.RED,1));
	} 
        }
}

das wäre ein Beispiel für einen CellRenderer, der nun dann was reinschreibt, wenn z.b. keine Zahl übergeben wird... machst du das auch so oder hilft das was ??
 
nee du missverstehst mich da. problem ist folgendes:
ich hab eine JTable die der user editieren kann und so weiter..zeilen hinzufügen, spalten hinzuügen etc.
so jetz sollen die zeilen aber unterschiedliche farben haben, also: cellRenderer. klappt auch. und damit der cell renderer weiß welche farbe für welche zelle kommt in die public Component getCellRenderer( oder so ähnlich) die funktion rein, dass er überprüft welche zahl am anfang der zelle steht.
Bsp.: in der zelle sieht der user: "Roar", aber in echt steht dort : "0Roar" die nul lwird vom CelRenderer aber verschluckt, weil die der user ja nicht sehen soll. das klappt auch alles. wenn der user jetzt aber die zelle editieren will um da "deathbyaclown" reinzuschreiben, sieht man in der zelle wieder "0Roar". meien frage ist jetzt: wie kann ich auf das editieren des users rechtzeitig reagieren um die null wegzumachen?

ich hoffe du hast es jetzt verstanden 🙁
 
ok ich glaub uch habe verstanden.

Mein letzter Versuch:

Wenn das mit setValue nicht klappt - wie wäre es dann mit der getValue(int row, int col) im TableModel. Bevor du den Wert zurückgibst testest du ob eben "0Roar" drinnensteht. Wenn ja, dann soll er nur "Roar" zurückgeben....

:?
 
nein du hast es nicht verstanden. es geht darum, dass man es sieht wenn man die zelle editiert.
ich bin aber doof.. ic hamch einfach nen neuen vector wo die daten drin stehen. das heitßt dann zwar wieder an x stellen im code umschreiben aber macht ja nix
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben