Tabellenzugriff einschränken

nippo

Grünschnabel
Hallo,

ich habe eine Jtable die ich mit einem MouseListener versehen habe. Bei Doppelklick auf die eine Tabellenzeile soll eine Detailansicht geladen werden. Problem ist, dass wenn ich einen Doppelklick auf eine Tabellenzeile mache, geht er auf den Inhalt der Tabellenspalte auf der der Mauszeiger liegt. So kommt nie ein Doppelklick zu stande.

Wie schränke ich die Tabelle so ein, dass beim Klicken (bzw. Doppelklicken) nur eine Tabellenzeile ausgewählt wird und nicht in den Inhalt der Tabellenspalte gesprungen wird?

Gruß nippo
 
Hallo!

Schau mal hier:

Code:
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/*
 * Created on 02.07.2004
 *
 * TODO 
 */

/**
 * @author Administrator
 */
public class JTableDemo extends JFrame {

    private final JTable table;

    private final TableModel model;

    public JTableDemo() {
        super("JTableDemo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String[][] data = { { "a1", "b1", "c1" }, { "a2", "b2", "c2" },
                { "a3", "b3", "c3" } };

        String[] headers = { "A", "B", "C" };

        model = new DefaultTableModel(data, headers);

        //Hier überschreiben wir die isCellEditable Methode von JTable 
        //damit ist das dblClick problem gelöst...
        table = new JTable(model) {
            public boolean isCellEditable(int x, int y) {
                return false;
            }
        };

        table.addMouseListener(new MouseAdapter() {

            public void mousePressed(MouseEvent evt) {
                if (evt.getClickCount() == 2) {
                    JOptionPane.showMessageDialog(null, "Row: "
                            + table.rowAtPoint(evt.getPoint()));
                }
            }
        });

        getContentPane().add(table, BorderLayout.CENTER);

        setVisible(true);
        pack();
    }

    public static void main(String[] args) {
        new JTableDemo();
    }
}

HTH

Gruß Tom
 
Zurück