ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
689
689
EMPFEHLEN
-
18.10.10 12:26 #1YelloW_22 Tutorials.de Gastzugang
anscheinend gibts ne interne Funktion der JTable die, wenn man Enter drückt, die Selektion der Tabelle um eins nach unten setzt.
Wie kann ich das ausschalten?
Hab schon versucht die selektion dann manuell wieder hoch zu setzten, geht zwar, aber is halt optisch ganz doof weil sie erst nach unten un dann nach oben springt.
lg YelloW
-
Howdie.
Witzig, habe praktisch die identische Antwort grad in einem anderen Thread gepostet:
Hast du schon versucht, einen KeyListener hinzuzufügen, und die Enter-Eingabe per KeyEvent#consume() zu unterbinden?
Gruß
miffi"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
19.10.10 13:29 #3YelloW_22 Tutorials.de Gastzugang
Problem ist: Hab schon nen Lauscher drauf, der ENTER abbprüft. Denn ENTER soll bei mir was anderes machen, nämlich den grad durch die Maus selektierten Satz anzeigen.
-
Das macht eigentlich relativ wenig aus.
Code java:
Allerdings weiß ich nicht, ob JTable standardmäßig bereits einen eigenen KeyListener implementiert, der auf bestimmte Standard-Keys für Tabellen (F2, Enter, Ctrl+c, etc.) lauscht. Einfach mal testen.
Gruß
miffi"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
19.10.10 13:55 #5YelloW_22 Tutorials.de Gastzugang
das bringt leider absolut null. Enter bewirkt weiterhin das versetzen der Selection.
Mein code jetzt:
else if(arg0.getKeyCode() == KeyEvent.VK_ENTER)
{
switch(arg0.getKeyCode())
{
case KeyEvent.VK_ENTER:
arg0.consume();
Operationen.Bearbeiten(h);
break;
}
}
-
Also erstmal:
Du hast in deinem Code jetzt doppelt gemoppelt - du prüfst jetzt den KeyCode sowohl mit deiner if-else-Kaskade als auch dem switch aus meinem Beispiel. Ich würde mich auf den switch beschränken, ist die schnellste Methode.
@Topic:
Hab grad was zu dem Thema gelesen.
Es scheint also eher ein kompliziertes Vorgehen zu sein, was du da anschlägst. Das Stichwort lautet wohl, eine eigene Input-Map zu erstellen, bzw. die entsprechenden Werte in der vorhandenen zu überschreiben.One has to install a disabled action for the KeyStroke in question. There is no way to remove KeyStrokes directly that a parent input map handles.
disabled = new AbstractAction()
{
public boolean isEnabled() { return false; }
public void actionPerformed(ActionEvent e) { }
};
// ....
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(...), "none");
table.getActionMap().put("none", disabled);
Strictly speaking, one should also install this in the WHEN_FOCUSED input map.
Note that if an editor component has focus, it will also possibly handle the key stroke.
Wenn es über die üblichen Swing-Verfahren nicht lösbar ist, weiß ich leider auch nicht weiter.
Gruß und viel Erfolg
miffi"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
19.10.10 20:08 #7
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
schau mal hier:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
package de.tutorials.training; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class JTableDisableCellChangeAfterEnter extends JFrame { JTable table; public JTableDisableCellChangeAfterEnter() { super("JTableClipboardExample"); setDefaultCloseOperation(EXIT_ON_CLOSE); Object[][] rowData = new Object[][] { { "a1", "b1", "c1" }, { "a2", "b2", "c2" }, { "a3", "b3", "c3" } }; Object[] columnNames = new Object[] { "a", "b", "c" }; table = new JTable(new DefaultTableModel(rowData, columnNames)); table.setSurrendersFocusOnKeystroke(true); add(new JScrollPane(table), BorderLayout.CENTER); pack(); setVisible(true); } public static void main(String[] args) { new JTableDisableCellChangeAfterEnter(); } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
Interne IDE als externe USB-Platte: "Access Denied" (o.ä.) für einige Dateien/Ordner
Von cocoon im Forum HardwareAntworten: 8Letzter Beitrag: 05.06.10, 18:56 -
Ersatz für Proxy / interne "Host-Umleitung"
Von fanste im Forum Linux & UnixAntworten: 5Letzter Beitrag: 07.07.09, 16:40 -
Über Webseite "interne" IP auslesen
Von _root im Forum JavaAntworten: 4Letzter Beitrag: 23.09.05, 16:17 -
Bilder unschönes "rote Kreuz" abschalten
Von sunflowerwoman70 im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 16.09.05, 17:19 -
Popupblocker für "interne" werbefenster
Von Mathiz im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 13.02.05, 23:20





Zitieren

Login





