JTable, JFrame

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

ich hab eine GUI mit mehreren jTables, die in eine jTabbedPane und im Tab jeweils in jSplitPane's eingebettet sind.
Ich möchte, dass ich jeweils nur eine Tabelle selektieren kann (also immer nur eine Zeile- Tabellenintern hat das mit jTable11.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); wunderbar geklappt. Beim Anklicken einer Tabelle, soll also eine eventuell bereits selektierte Tabelle wieder deselektiert werden.
Hab mich mit Focus, Listenern und Selektionen auf allen Ebenen (JFrame, JTabbedPane, JPanel, JSplitPane, JTable) rumgeschlagen, leider ohne Erfolg.
Grundsätzlich geht es mir nur darum, beim Aufruf des Kontext Menüs die richtigen (also selektierten) Inhalte für das Fenster, das sich dann öffnet abrufen zu können.

Kann mir bitte jemand helfen :?:
 
Gast hat gesagt.:
..Beim Anklicken einer Tabelle, soll also eine eventuell bereits selektierte Tabelle wieder deselektiert werden.
Bei "mousePressed" auf eine Tabelle könntest du in den Tabellen, die keinen Fokus haben,
einfach die Selektionen löschen:
Code:
       SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                if(!jTable1.hasFocus()) jTable1.clearSelection();
                if(!jTable2.hasFocus()) jTable2.clearSelection();
            }
        });
 
Danke schon mal für deine Antwort, für mich stellt sich nun (neuerlich) das Problem, dass ich es nicht schaffe, ein "true" auf jTable1.hasFocus() zu bekommen.
jTable1.grabFocus() und .requestFocus() bleiben ohne Auswirkungen

jTable1.isDisplayable(), .isFocusable() und isVisible() liefern aber schon ein true

Code:
Boolean id3 = jTable5.isDisplayable();
System.out.println("jTable5- is displayable?: " +id3); //true
					
Boolean iv3 = jTable5.isVisible();
System.out.println("jTable5- is visible?: " +iv3); //true
					
Boolean isf3 = jTable5.isFocusable();
System.out.println("jTable5- is focusable?: " +isf3); //true

jTable5.grabFocus();
jTable5.requestFocus();

Boolean hf23 = jTable5.hasFocus(); //false
System.out.println("jTable5- has focus?: " +hf23);


Wär super, wenn du mir bitte nochmal helfen könntest
 
Gast hat gesagt.:
..für mich stellt sich nun (neuerlich) das Problem, dass ich es nicht schaffe,
ein "true" auf jTable1.hasFocus() zu bekommen..
Wenn man in eine JTable klickt bekommt sie den Focus, nicht wahr?
Ich verstehe daher dein Problem nicht wirklich :?
Oder hast du vielleicht den "SwingUtilities.invokeLater" vergessen?
In welcher Methode fragst du den Focus ab? In mousePressed?
 
Hi André,

- ja wenn man in eine JTable klickt, bekommt sie den Focus, normalerweise, nicht bei mir 🙁 , ich hatte mich voll verrannt
- danke, dass du versucht hast, mein Problem zu verstehen, ich hatte es auch nicht ganz verstanden (bei meinen Java- Anfänger- Kenntnissen kein großes Wunder)
- ja den "SwingUtilities.invokeLater" hatt ich "vergessen" 😳
- den Focus habe ich schon im MousePressed abgefragt, allerdings über ein dort aufgerufenes KontextMenü (PopUp), und daher hat auch dieser Teil nicht wirklich geklappt



So und jetzt das Wichtigste
Vier Tage hatte ich mich jetzt mit diesem Problem rumgeschlagen, und dank deiner tollen Hilfe :applaus: war es in wenigen Minuten behoben, dafür ein ganz großes Herzliches Dankeschön!

Alles Gute! :wink:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben