# JTable und Focus



## Gast2 (18. Jan 2008)

Hallo ich hab in meiner JTable eine JComobox drin... Wenn ich in meiner 1.ComboBox etwas auswähle und dann in eine 2te gehe hat dir die erste imme rnoch den Focus... Sieht irgendwie aus als ob ich 2 hab...







kennt jemand das problem

EDIT: noch ne frage die ComboBox geht immer erst nach dem2 klick auf...Kann man das umstellen dass sie gleich aufgeht nahcem 1. klick?

thx


----------



## Gast2 (18. Jan 2008)

so ein Problem gelöst(vorheriger Thread)....mein Problem ist jetzt noch wenn ich ein Button oder irgendwas in die Tabelle reinmach und z.B. den Button betätige dass ich
1. immer 2 Klicks brauche bis er das 1. mal tut
2. die zeile, in der die Componente ist wird nicht ausgewählt ...Also wie oben im Bild blau makiert...


----------



## Gast2 (2. Feb 2008)

????


----------



## Gast2 (2. Feb 2008)

????


----------



## André Uhres (2. Feb 2008)

SirWayne hat gesagt.:
			
		

> ????


Wenn eine JComboBox zu viele Fragezeichen macht, dann fliegt sie bei mir raus.
So toll sind die Dinger ja auch wieder nicht, dass man nicht auf sie verzichten könnte: TableBoxes.jar (Quellcode im jar)


----------



## Gast2 (2. Feb 2008)

lol ok auch nee möglichkeit... aber ich hab noch das problem dass ich den button 2 mal klicken muss damit er tut... 1. fokusieren der zeile 2te mal kann ich ihn ausführen...


----------



## André Uhres (2. Feb 2008)

SirWayne hat gesagt.:
			
		

> .. aber ich hab noch das problem dass ich den button 2 mal klicken muss damit er tut... 1. fokusieren der zeile 2te mal kann ich ihn ausführen...


Mach dies in actionPerformed: AbstractCellEditor#fireEditingStopped()


----------



## Gast2 (3. Feb 2008)

:roll: ähm ok kleines Bsp.?


----------



## André Uhres (3. Feb 2008)

ButtonColumn.java


----------



## Gast2 (3. Feb 2008)

warum hast du 2 Buttons eingebaut?


----------



## André Uhres (3. Feb 2008)

Der eine ist die "TableCellRendererComponent" und der andere ist die "TableCellEditorComponent".


----------



## Gast2 (3. Feb 2008)

ah ok....

1.aber wo muss ich die klassen in der tabelle jetzt einbauen?????
2. ich hab in meinem Model eine Spalte für die Buttons ... muss ich die noch irgendwie überschreiben ???komm grad irgendwie mit der Klasse nicht so zurecht ....


----------



## André Uhres (3. Feb 2008)

Um Buttons in Spalte 4 anzulegen: new ButtonColumn(table, 4);
(der Wert der Zelle sollte dem Buttentext entsprechen)


----------



## Gast2 (3. Feb 2008)

ah ok... cool danke!!!! aber d.h für jede tabelle muss sich diese klasse anpassen weil anders komm ich ja sonst nicht an das actionPerformed oder???
Und noch ein kleines Problem er makiert mir beim Buttondruck die Zeile nicht....


----------



## André Uhres (3. Feb 2008)

SirWayne hat gesagt.:
			
		

> ..aber d.h für jede tabelle muss sich diese klasse anpassen
> weil anders komm ich ja sonst nicht an das actionPerformed oder???
> 
> Und noch ein kleines Problem er makiert mir beim Buttondruck die Zeile nicht....


Man könnte den Listener auslagern. 

Mit der Zeilenselektion hab ich kein Problem.


----------



## Gast2 (4. Feb 2008)

Also wenn ich auf den Button klick kommt immer -1 ....

Was meinst du mit Auslagern??? Einfach meinem ButtonCloumn Objekt ein ActionListener adden????


----------



## André Uhres (5. Feb 2008)

SirWayne hat gesagt.:
			
		

> Was meinst du mit Auslagern?


Einen externen ActionListener angeben, an Stelle von "this".


----------



## Gast2 (6. Feb 2008)

ja ok logisch....

aber die -1 .... ich weiß nicht ich klick auf den button und er makiert die zeile nicht.... hab nichts an deiner klasse geändert....


----------



## André Uhres (6. Feb 2008)

SirWayne hat gesagt.:
			
		

> aber die -1 .... ich weiß nicht ich klick auf den button und er makiert die zeile nicht.... hab nichts an deiner klasse geändert....


Funktioniert bei mir auf Anhieb


----------



## Gast2 (6. Feb 2008)

schlecht ---> an welchem renderer kann es liegen... Denk dass es irgendwas mit der JTable zu tun hat


----------



## André Uhres (6. Feb 2008)

SirWayne hat gesagt.:
			
		

> schlecht ---> an welchem renderer kann es liegen... Denk dass es irgendwas mit der JTable zu tun hat


Da es im Normalfall funktioniert, müsste ich Hellseher sein, um herauszufinden, was bei dir besonders ist.
Versuch mal eine ganz simple Anwendung zu machen, ohne alles drumherum.
Wenn's funktioniert, dann erweiterst du Schrittweise bis der Fehler auftritt.


----------



## Gast2 (6. Feb 2008)

ok ich versuchs mal


----------



## Gast2 (6. Feb 2008)

mhm mehr kann ich nimmer kürzen 


```
public class Tabelle extends JTable
{

	public Tabelle(TabellenModel model)
	{
		super(model);
		super.setRowHeight(20);
		getTableHeader().setReorderingAllowed(false);
		getTableHeader().setFont(new Font("Arial",Font.BOLD,12));
		getTableHeader().setPreferredSize(new Dimension(20,22));   

}



   
    public Object getValueAt(int row, int column) {   

       return super.getValueAt(row, column);   
    }

    public void setValueAt(Object aValue, int row, int column) {
    super.setValueAt(aValue, row, column);

       
    }

	public boolean isCellEditable(int row, int column) {
		return true;
		}	
	
	
}
```


----------



## André Uhres (7. Feb 2008)

SirWayne hat gesagt.:
			
		

> mhm mehr kann ich nimmer kürzen ..


 :shock:  :?  :x  :roll:  :?:  ???:L  :autsch:  :bahnhof:


----------



## Gast2 (7. Feb 2008)

ja ich hab alles aus meiner tabelle  rausgekürzt und  er makiert mir die zeile immer noch nicht wenn ich auf den Button drück.... hast du irgwendwo ein changeSelection aufgerufen ???


----------



## André Uhres (7. Feb 2008)

SirWayne hat gesagt.:
			
		

> ja ich hab alles aus meiner tabelle  rausgekürzt und  er makiert mir die zeile immer noch nicht wenn ich auf den Button drück.... hast du irgwendwo ein changeSelection aufgerufen ???


Ich mach weiter nix als:

```
Tabelle table = new Tabelle(new TabellenModel());
        add(new JScrollPane(table));
        new ButtonColumn(table, 3);
```
Funkioniert super   

(Mit blossen Codefragmenten kommen wir wahrscheinlich nicht weiter. Kannst du auch was Ganzes?
Aber nicht mehr als 100 Zeilen, die main-Methode und die imports mitgerechnet!)


----------



## HLX (7. Feb 2008)

Welche Java-Versionen verwendet ihr?

Hintergrund: Es gab in der Vergangenheit hin und wieder Probleme mit CellEditoren in Tabellen. Habe u.a. selbst die Erfahrung mit Comboboxen gemacht (Focus-Problem). Von daher kann die Verwendung verschiedener Java-Versionen zu unterschiedlichen Ergebnissen führen. Empfehlenswert ist mindestens Java 1.6 - hier ist z.B. das Combobox-Problem behoben worden.


----------



## André Uhres (7. Feb 2008)

HLX hat gesagt.:
			
		

> Welche Java-Versionen verwendet ihr?..


1.4
1.5
1.6


----------



## Gast2 (7. Feb 2008)

1.6 ok ich schick dir heut abend oder morgen mal den code ... vielleicht stoß ich ja auf das Problem 
denk nicht dass es mehr wie 100 zeilen wird.... Ich schick Tabelle und Model den die Button Class hast ja oder soll ich die auch mitschicken?


----------



## André Uhres (7. Feb 2008)

Nein, die nicht.


----------



## Gast2 (8. Feb 2008)

ok ich habs hab in meinem Model bei setValueAt -->fireTableDataChanged(); reingemacht....
wenn das draußen ist klappts wunderbar...


----------

