JTabel Selection listener Bsp.

Salo

Aktives Mitglied
SaloMitglied
Hi,

könnte mir jemand bitte kurz ein kleines Beispielprogramm zeigen,
in dem eine Tabelle in Swing angezeigt wird und wenn man eine Zelle anklickt,
in der Konsole ausgegeben wird, welche Zelle man angeklickt hatt.

Ich brauche das nur weil ich das Toturial von Oracle an dem Punkt nicht ganz verstanden habe und in dem Beispiel nicht ganz verstehe was genau dafür nötig ist.
Vielen Dank schonmal im vorraus.
Gruß Salo
 

Robat

Top Contributor
Dazu gibt es doch Beispiele wie Sand am Meer.
Welchen Teil verstehst du denn nicht? Mit einer genaueren Frage wäre dir schneller geholfen..

Du musst der Tabelle einen ListSelectionListener hinzufügen und dann dort drin das entsprechende Verhalten implementieren.
 

Salo

Aktives Mitglied
Ok.
Hatt zwar bisschen gedauert habe jetzt aber folgendes geschrieben: (bzw. größtenteils "kopiert")

Java:
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Salo
 */
public class TableTester extends AbstractTableModel {
 
    JTable table;
    JList list;
    ListSelectionModel listSelectionModel = new ListSelectionModel() {
        @Override
        public void setSelectionInterval(int index0, int index1) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void addSelectionInterval(int index0, int index1) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void removeSelectionInterval(int index0, int index1) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public int getMinSelectionIndex() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public int getMaxSelectionIndex() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public boolean isSelectedIndex(int index) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public int getAnchorSelectionIndex() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void setAnchorSelectionIndex(int index) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public int getLeadSelectionIndex() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void setLeadSelectionIndex(int index) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void clearSelection() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public boolean isSelectionEmpty() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void insertIndexInterval(int index, int length, boolean before) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void removeIndexInterval(int index0, int index1) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void setValueIsAdjusting(boolean valueIsAdjusting) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public boolean getValueIsAdjusting() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void setSelectionMode(int selectionMode) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public int getSelectionMode() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void addListSelectionListener(ListSelectionListener x) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void removeListSelectionListener(ListSelectionListener x) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    };

    public TableTester() {
        super();
    
        table = new JTable(this);

        listSelectionModel = list.getSelectionModel();
        table.setSelectionModel(listSelectionModel);
        listSelectionModel.addListSelectionListener(new SharedListSelectionHandler());
    }

    @Override
    public int getRowCount() {
        return 100;
    }

    @Override
    public int getColumnCount() {
        return 3;
    }

    @Override
    public Object getValueAt(int row, int col) {
        if (col == 0) {
            return ""/* + row*/;
        } else if (col == 1) {
            return "" + (row * row);
        } else {
            return "" + (row * row * row);
        }
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return columnIndex == 1 || columnIndex == 2;
    }
 
    class SharedListSelectionHandler implements ListSelectionListener {
        public void valueChanged(ListSelectionEvent e) {
            ListSelectionModel lsm = (ListSelectionModel)e.getSource();

            int firstIndex = e.getFirstIndex();
            int lastIndex = e.getLastIndex();
            boolean isAdjusting = e.getValueIsAdjusting();
            System.out.println("Event for indexes "
                          + firstIndex + " - " + lastIndex
                          + "; isAdjusting is " + isAdjusting
                          + "; selected indexes:");

            if (lsm.isSelectionEmpty()) {
                System.out.println(" <none>");
            } else {
                // Find out which indexes are selected.
                int minIndex = lsm.getMinSelectionIndex();
                int maxIndex = lsm.getMaxSelectionIndex();
                for (int i = minIndex; i <= maxIndex; i++) {
                    if (lsm.isSelectedIndex(i)) {
                        System.out.println(" " + i);
                    }
                }
            }
        }
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        JFrame f = new JFrame();
        f.getContentPane().add(new JScrollPane(
                new JTable(new TableTester())));
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }

}

gibt mir aber folgende exception:

Java:
Exception in thread "main" java.lang.NullPointerException
    at Tables.TableTester.<init>(TableTester.java:136)
    at Tables.TableTester.main(TableTester.java:199)
/home/pi/.cache/netbeans/8.2/executor-snippets/run.xml:53: Java returned: 1

Was habe ich hier Falsch gemacht?
Ist das überhaupt der richtige Ansatz?

Danke schonmal für eure Hilfe,
Salo
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
H JTabel Inhalt löschen AWT, Swing, JavaFX & SWT 1
P jtabel Zeilen auswählbar, aber nicht editierbar AWT, Swing, JavaFX & SWT 3
ZoXlike Wie kann man ArrayList in JTabel einlesen? [WindowBuilder] AWT, Swing, JavaFX & SWT 1
S MySql -> DefaultTabelModel -> JTabel AWT, Swing, JavaFX & SWT 18
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
Y Swing JTabel verwenden ? AWT, Swing, JavaFX & SWT 11
R JTabel - Header AWT, Swing, JavaFX & SWT 2
L JTabel Methode addRow und deleteRow AWT, Swing, JavaFX & SWT 12
M JTabel mit Bildern AWT, Swing, JavaFX & SWT 2
P JTabel Listener Problem / Editierbarkeit AWT, Swing, JavaFX & SWT 8
T Spaltenbreite bei jTabel in Kombination mit Srollbalken AWT, Swing, JavaFX & SWT 2
M jTabel - Hinzufügen einer Reihe AWT, Swing, JavaFX & SWT 9
T jtabel - Zeile selktierbar aber nicht editierbar AWT, Swing, JavaFX & SWT 2
B JTabel und Daten einschraenken AWT, Swing, JavaFX & SWT 3
W JTabel darf nicht bei Enter AWT, Swing, JavaFX & SWT 2
W JTabel Header - Einfügen eines Textfeldes AWT, Swing, JavaFX & SWT 3
J JTabel: TableHeader und Zellen Problem AWT, Swing, JavaFX & SWT 2
G JTabel und Icons AWT, Swing, JavaFX & SWT 9
B jTabel, MVC und AbstractTableModel AWT, Swing, JavaFX & SWT 6
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
S SWT Enable Selection AWT, Swing, JavaFX & SWT 11
B ButtonGroup mit mehr als einer Selection AWT, Swing, JavaFX & SWT 2
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
S SWT ProgressBar: Value/Selection anzeigen AWT, Swing, JavaFX & SWT 4
H JList: Selection-Border entfernen AWT, Swing, JavaFX & SWT 2
P SWT Tree - Keine Selection zulassen AWT, Swing, JavaFX & SWT 4
R JTree und Selection mit Ctrl AWT, Swing, JavaFX & SWT 5
lumo SWT MenuItem + Selection/Listener AWT, Swing, JavaFX & SWT 2
Dragonfire JTree, Selection via event AWT, Swing, JavaFX & SWT 7
O JTable label background und selection AWT, Swing, JavaFX & SWT 3
A Wie werde ich beim JTable die Selection wieder los? AWT, Swing, JavaFX & SWT 6
Zed JTable view auf Selection setzen AWT, Swing, JavaFX & SWT 2
R TreeViewer in SWT: Default Selection eines Items AWT, Swing, JavaFX & SWT 3
S JTable - Problem mit der Selection AWT, Swing, JavaFX & SWT 4
G JTextArea & JTextField Selection Problem (ersetzen) AWT, Swing, JavaFX & SWT 2
P JTable Row-Selection nach eingegebenem Anfangsbuchstaben AWT, Swing, JavaFX & SWT 4
O JTextField- Selection / Focus bei nicht editierbaren Feldern AWT, Swing, JavaFX & SWT 2
D Selection SWT Table AWT, Swing, JavaFX & SWT 5
J JTable selection AWT, Swing, JavaFX & SWT 2
V Selection Problem mit JList AWT, Swing, JavaFX & SWT 2
G JTree - ungültiger selection update AWT, Swing, JavaFX & SWT 2
O JTable selection eines weiter setzen wie? AWT, Swing, JavaFX & SWT 3
S Selection Color in JTabbedPane AWT, Swing, JavaFX & SWT 5
A JTree Problem mit Focus bzw. Selection AWT, Swing, JavaFX & SWT 5
G JTree. Neues Element hinzufügen und Selection beibehalten! AWT, Swing, JavaFX & SWT 3
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
E Listener AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
J Swing dragging listener AWT, Swing, JavaFX & SWT 5
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben