tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
552
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ryu20 Ryu20 ist offline Mitglied Silber
    Registriert seit
    Oct 2004
    Beiträge
    64
    Hi,

    Ich habe ein kleines Problem, ich habe eine JTable bei der Events ausgeführt erden, sobald eine Zelle angeklickt wird. Mein Problem ist das auch Events ausgeführt werden wenn ich die Spalten neu ordne ( setReorderingAllowed(true); wenn ich eine Spalte an eine andere Position ziehe)

    Weiß jemand wie ich nur Events ausführen kann wenn eine Zelle selektiert wird?

    Ich habe hier ein kleines Beispiel (zum besseren Verständnis)


    Code :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    
     
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import java.awt.Dimension;
    import java.awt.GridLayout;
     
    public class TableSample extends JPanel {
     
     
        public TableSample() {
            super(new GridLayout(1,0));
     
            String[] columnNames = {"1",
                    "2",
                    "3",
            "4"};
     
            Object[][] data = {
                    {"A", "B", "C", new Integer(1)},
                    {"D", "E", "F", new Integer(2)},
                    {"G", "H", "I", new Integer(3)},
                    {"J", "K", "L", new Integer(4)},
                    {"M", "N", "O", new Integer(50)}
            };
     
            final JTable table = new JTable(data, columnNames);
            table.setPreferredScrollableViewportSize(new Dimension(500, 70));
            table.setFillsViewportHeight(true);
            table.setColumnSelectionAllowed(true);
            table.getTableHeader().setReorderingAllowed(true);
            
            Listener listener = new Listener(table);
            table.getSelectionModel().addListSelectionListener(listener);
            table.getColumnModel().getSelectionModel().addListSelectionListener(listener);
            JScrollPane scrollPane = new JScrollPane(table);
            this.add(scrollPane);
     
        }
     
     
        private static void createAndShowGUI() {
     
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            TableSample newContentPane = new TableSample();
            newContentPane.setOpaque(true);
            frame.setContentPane(newContentPane);
     
            frame.pack();
            frame.setVisible(true);
        }
     
        public static void main(String[] args) {
     
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
     
    class Listener implements ListSelectionListener{
     
        JTable table;
     
        public Listener(JTable table){
            this.table = table;
        }
     
        @Override
        public void valueChanged(ListSelectionEvent e) {
            // TODO Auto-generated method stub
            if (e.getSource() == table.getSelectionModel()
                    && table.getRowSelectionAllowed()) {
                System.out.println("Row");
            } else if (e.getSource() == table.getColumnModel().getSelectionModel()
                    && table.getColumnSelectionAllowed() ){
                System.out.println("Col");
            }
        }
     
    }
    Vielen Dank schonmal
     

  2. #2
    TheJadix TheJadix ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Bremerhaven
    Beiträge
    220
    Hi,

    unter den gegebenen Umständen musst du wohl mit dem Verhalten der JTable leben.

    Die JTable arbeitet eben so mit dem DefaultSelectionModelen zusammen.
    Wo man dort den Hebel zur beseitigung des Problems ansetzen sollte ?
    Gute Frage ... sollte man mal in einem Forum diskutieren !

    Gruß JAdix
     
    Signatur ? ? ? So ein Humbug ! ! !

  3. #3
    Ryu20 Ryu20 ist offline Mitglied Silber
    Registriert seit
    Oct 2004
    Beiträge
    64
    hi

    die einzige Möglichkeit auf die ich gekommen bin war ein boolean auf false zu setzen wenn der Inhalt vom Event nicht ausgeführt werden soll, habe aber eine komplett andere Lösung gefunden die mein Hauptproblem war, also kann das Event jetzt ohne Probleme ausgeführt werden

    Danke
     

Ähnliche Themen

  1. Swing JButton in JTable-Zelle: Event-Problem
    Von pcworld im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 04.11.10, 21:22
  2. JTable Zelle editieren sodass ein Event im Listener ausgelöst wird
    Von BKochs im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 13.07.09, 09:54
  3. Beim Klick auf Movie-Clip Event ausführen
    Von 64fgh645gfh im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 04.10.07, 13:23
  4. JTable aktualisert nicht beim 2. Mal - Hilfe
    Von javad im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 04.06.06, 17:26
  5. mit Event-Handler zwei Funktionen ausführen
    Von tantebootsy im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.01.05, 15:35