Bestimmte Zellenselektion in einer JTable

Status
Nicht offen für weitere Antworten.
S

shlong

Gast
Hi,

ich hab derzeit eine JTable mit einem eigenen TableModel(MyTabelModel extends TabelModel). In der Tabelle kann ich einige Zellen(ganze Spalten) editieren und manche nicht, das funktioniert ja wunderbar über die isCellEditable(int rowIndex, int colIndex) Funktion in meinem MyTabelModel.
Jetzt möchte ich, dass nur jene Zellen die nicht editierbar auch nicht selektierbar sind und umgekehrt. (jene Zellen die editierbar auch selektierbar sind ) ist ja auch irgendwie verständlich oder???. :wink:

Der Hintergedanke ist jener, dass ein Benutzer der nur mit Tastatur arbeitet, somit mit Tabulator über jene Zellen bzw. Spalten springt die auch nicht editierbar sind und viel schneller arbeiten kann.

Leider habe ich in der API nichts gefunden wie man einzelne Zellen oder auch nur einzelne Spalten eine Selektierung erlaubt bzw. verbietet.
(nur im TableColumModel kann man sagen ob überhaupt die Selektion von Spalten erlaubt ist, aber das hilft mir nicht weiter)

Vielleicht kann mir ja bei meinem Problem jemand weiterhelfen und mir einen Rat geben.(sei er noch so trivial) Denn ich hab irgendwie keine Idee wie man das macht bzw. machen könnte.:bahnhof:


Danke im Vorraus
 
S

shlong

Gast
Hi ,

danke für die schnelle antwort.

Was ich damit gemeint habe ist, dass mit der Methode im TableColumnModel eine Selektion von allen(überhaupt) oder von keiner Spalte erlaubt ist. Ich möchte aber ja nur bestimmte Spalten selektierbar machen.

Oder versteh ich API falsch, ich erlaub mir die gemeinte Methode zu verlinken...

TableColumnModel.html#setColumnSelectionAllowed(boolean)

Sorry für die schlechte Formulierung meiner Seite...

thx
 

Sky

Top Contributor
Anonymous hat gesagt.:
Hallo zusammen !

Habe das gleiche Problem.

Danke
Was ist dein genaues Problem? Es sollen bestimmte Spalten selektierbar sein? Wie soll das gehen über klick in der Tabelle? oder auf den Spaltenkopf? Was sind deine Anforderungen
 
R

rogerle

Gast
Hallo !

Ich habe bei einer JTable die Zellenselektion aktiviert.

Es gibt 4 Spalten. Ich möchte das mit der Tabulator-Taste nur

die Zellen der dritten und vierten Spalte selektiert werden können.

Besten Dank
 

Sky

Top Contributor
Vielleicht gibt es einen besseren Weg, spontan würde ich sagen:
- KeyListener an die Tabelle hängen
- auf 'keyPressed' die neue Selektion in Abhängigkeit der alten ermitteln
- Selektion ändern.
 
R

rogerle

Gast
Hi !

Tja . genau das ist ja das Problem ?!

Wie selektiere ich eine bestimmte Zelle ?

setSelectedRow und setSelectedColumn hat's ja nicht .


Andreas
 

Mag1c

Top Contributor
Moin,

wie wärs mit JTable#changeSelection(int, int, boolean, boolean) ?

Mal abgesehen davon könnte man das Ganze z.B. über eine abgeleitete JTable realisieren, die es einfach nicht erlaubt, die betreffenden Zellen/Spalten zu selektieren. Eine zweite Möglichkeit wäre, spezielle ListSelectionModels an die JTable und das TableColumnModel zu hängen.

Gruß
Mag1c
 
R

rogerle

Gast
Moin Forum !

So getht's nun:

Code:
		tabelle.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_TAB) {
				   int col = getSelectedColumn();
				   int row = getSelectedRow();
                                   switch (col) {
				     case 0:
					e.consume();
					setRowSelectionInterval(row, row);
	                                setColumnSelectionInterval(2, 2);
	                                break;
				     case 3:
					e.consume();
	                                setColumnSelectionInterval(2, 2);
					if (row + 1 == getRowCount()){
					   setRowSelectionInterval(0, 0);
					}
					else{
					   setRowSelectionInterval(row + 1 ,row + 1);
					}
					break;
				   default:
					break;
				 }
				} else {
					super.keyPressed(e);
				}
			};
		});

Bis dann

rogerle
 

André Uhres

Top Contributor
> Jetzt möchte ich, dass nur jene Zellen die nicht editierbar auch nicht selektierbar sind und umgekehrt.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class TabellenNavigation extends JFrame {
    public TabellenNavigation() {
        setTitle("Drücke Enter zum Navigieren");
        setDefaultCloseOperation( EXIT_ON_CLOSE );
        setSize(400,300);
        setLocationRelativeTo( null );
        JTable tabelle = new JTable(15, 5) {
            public boolean isCellEditable(int zeile, int spalte) {
                return spalte % 2 == 0;//jede zweite Zelle ist editierbar
            }
        };
        getContentPane().add( new JScrollPane( tabelle ) );
        InputMap im = tabelle.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        //  "Enter"-Taste bekommt die Funktion der "Tab"-Taste
        KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
        KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
        im.put(enter, im.get(tab));
        //  Die Taste "Rechter-Pfeil" ausblenden
        KeyStroke rechts = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0);
        im.put(rechts, "none");
        //  Das übliche "Tab" Verhalten überschreiben:
        //  Auf die nächste editierbare Zelle springen;
        //  wenn keine editierbare Zellen vorhanden, auf nächste Zelle gehen.
        final Action alteTabAktion = tabelle.getActionMap().get(im.get(tab));
        Action tabAktion = new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                alteTabAktion.actionPerformed( e );
                JTable tabelle = (JTable)e.getSource();
                int zeilenAnzahl = tabelle.getRowCount();
                int spaltenAnzahl = tabelle.getColumnCount();
                int zeile = tabelle.getSelectedRow();
                int spalte = tabelle.getSelectedColumn();
                while (! tabelle.isCellEditable(zeile, spalte) ) {
                    spalte += 1;
                    if (spalte == spaltenAnzahl) {
                        spalte = 0;
                        zeile +=1;
                    }
                    if (zeile == zeilenAnzahl) {
                        zeile = 0;
                    }
                    //  Zurück zum Startpunkt, rausgehen.
                    //  (für den Fall wo keine Zelle editierbar ist)
                    if (zeile == tabelle.getSelectedRow()
                    &&  spalte == tabelle.getSelectedColumn()) {
                        break;
                    }
                }
                tabelle.changeSelection(zeile, spalte, false, false);
            }
        };
        tabelle.getActionMap().put(im.get(tab), tabAktion);
    }
    public static void main(String[] args) { new TabellenNavigation().setVisible(true);}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JavaFX WebView zeigt bestimmte Websites nicht an AWT, Swing, JavaFX & SWT 2
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
Meeresgott AWT JFileChooser bestimmte Ordner anzeigen AWT, Swing, JavaFX & SWT 16
S Dreiecke in bestimmte Zellen einer JTable AWT, Swing, JavaFX & SWT 9
P Bestimmte Kreise färben AWT, Swing, JavaFX & SWT 3
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
T Nur bestimmte Bereiche eines Fotos bearbeiten AWT, Swing, JavaFX & SWT 0
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
D Swing Bestimmte Berechnung von Spalten durchführen und dann die Zeilen nach bestimmten Kriterien einfärben AWT, Swing, JavaFX & SWT 5
P DefaultStyledDocument eingegebenen String durchsuchen und bestimmte Sachen einfärben AWT, Swing, JavaFX & SWT 1
A Swing Bestimmte Werte anzeigen JSlider() AWT, Swing, JavaFX & SWT 2
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
K LayoutManager Buttons auf bestimmte x und y Koordinaten AWT, Swing, JavaFX & SWT 2
4 AWT bestimmte Objekte zeichnen und löschen AWT, Swing, JavaFX & SWT 8
GianaSisters Swing jTable (bestimmte Zellen umrahmen) AWT, Swing, JavaFX & SWT 8
M [erledigt] Bestimmte Zeile aus JTextArea löschen AWT, Swing, JavaFX & SWT 3
J Swing jSlider nur auf bestimmte werte beschränken AWT, Swing, JavaFX & SWT 15
Z AWT Auf bestimmte Checkbox einer Checkboxgroup zugreifen AWT, Swing, JavaFX & SWT 3
S JTable: Eingabe nur für bestimmte Var.Typen zulassen AWT, Swing, JavaFX & SWT 13
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
E Komponenten die wie bestimmte Symbole aussehen AWT, Swing, JavaFX & SWT 6
M Swing JList --> Selektion für bestimmte Indexe verbieten? AWT, Swing, JavaFX & SWT 8
T JComboBox: ActionListener/ItemListener wie nur auf bestimmte Events reagieren? AWT, Swing, JavaFX & SWT 7
borobudur Bestimmte Zone auf einem Bild definieren AWT, Swing, JavaFX & SWT 7
dl85hej bestimmte Zeile anspringen AWT, Swing, JavaFX & SWT 3
R Bestimmte Komponenten vom Neuzeichnen abhalten AWT, Swing, JavaFX & SWT 2
G Bild a auf Bild b, bestimmte Farbe (zb Weiß) durchsichtig AWT, Swing, JavaFX & SWT 7
G Aus Arraylist bestimmte Objekte wiedergegeben bekommen? AWT, Swing, JavaFX & SWT 7
F Wie bestimmte Obj. einer ContentPane abfragen und vergl? AWT, Swing, JavaFX & SWT 11
G Bei JTable eine bestimmte Zelle färben AWT, Swing, JavaFX & SWT 11
R nur bestimmte Daten in JTable anzeigen lassen? AWT, Swing, JavaFX & SWT 3
A Bestimmte Spalten nicht editierbar machen AWT, Swing, JavaFX & SWT 6
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
A JTable, bestimmte Zeilen blau hinterlegen AWT, Swing, JavaFX & SWT 3
K Punkte in eine bestimmte Richtung bewegen AWT, Swing, JavaFX & SWT 5
L Again: In JTable bestimmte Zellen färben AWT, Swing, JavaFX & SWT 12
S JCellRenderer läuft nur einmal in bestimmte Bedingung AWT, Swing, JavaFX & SWT 5
B JEditorPane: Höhe für bestimmte Breite bestimmen AWT, Swing, JavaFX & SWT 4
V Bestimmte Spalten im JTable nicht anzeigen AWT, Swing, JavaFX & SWT 2
C Wie skaliere ich ein Image in eine bestimmte größe? AWT, Swing, JavaFX & SWT 2
M Bestimmte GUI erstellen: Layoutproblem AWT, Swing, JavaFX & SWT 17
K Objekt in eine bestimmte Zelle eines JTables legen AWT, Swing, JavaFX & SWT 3
B ComboBox: nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 5
B Eingabefelder nur für bestimmte Werte AWT, Swing, JavaFX & SWT 8
W JFileChooser; nur bestimmte Datein AWT, Swing, JavaFX & SWT 5
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben