Tabellen Überschriften ändern -setColumnIdentifiers()- Fehler

A

acdc

Gast
Hallo,
ich habe hier folgendes Programm, welches die Header der Tabelle ändern soll:

Java:
package deskapp1;

import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;

  class HeaderSelector extends MouseAdapter
  {
    OwnTableModel tableModel;
    Vector newData;

    public HeaderSelector(OwnTableModel tModel)
    {
      tableModel = tModel;
      newData=new Vector();

    }
    public void mousePressed(MouseEvent e)
    {
      if(e.getButton()==MouseEvent.BUTTON3)  //nur wenn die rechte Maustaste gedrückt wird
      {
        JTableHeader th = (JTableHeader)e.getSource();
        Point p = e.getPoint();
        int col = getColumn(th, p);
                      
        InputDialog input=new InputDialog();
        input.viewDialog();

        if(input.getValue())
        {       
          newData=tableModel.getColumnIdentifiers(); //Eigene Methode in OwnTableModel "return columnIdentifiers"
          newData.insertElementAt(input.getText(),col); // neuer Text aus eigenem Dialog
          newData.remove(col+1);
          tableModel.setColumnIdentifiers(newData);
       }
      }
    }

    private int getColumn(JTableHeader th, Point p)
    {
      TableColumnModel model = th.getColumnModel();
        for(int col = 0; col < model.getColumnCount(); col++)
          if(th.getHeaderRect(col).contains(p))
            return col;
        return -1;
    }
  
  }

Aufruf:

    Tabelle1.setModel(modelT1);
    Tabelle1.getTableHeader().addMouseListener(new HeaderSelector(modelT1));

Das Problem ist nun, wenn ich mit der Rechen Maustaste auf einen SpaltenKopf klicke, kommt der Dialog und ich gebe einen neuen Namen ein. nach dem Klick auf ok kommt die exeption:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementAt(Vector.java:430)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderRenderer(BasicTableHeaderUI.java:654)
at javax.swing.plaf.basic.BasicTableHeaderUI.paintCell(BasicTableHeaderUI.java:670)
..usw

das Ganze funktioniert aber, wenn ich den Aufruf so gestalte:
Java:
    Tabelle1.addMouseListener(new HeaderSelector(modelT1));
nur muss man hier mit der Maus auf die Spalte klicken und nicht auf die Überschrift.
Außderdem funktioniert der Typcast in
Java:
JTableHeader th = (JTableHeader)e.getSource();
nicht mehr.

Hat jemand eine Idee wie ich das Problem beheben kann, bzw. gibt es eine bessere Möglichkeit die Tabellenüberschrift per Mausklick zu ändern?
(aber nicht nur die daten von der Klasse JTabel, sondern wirklich das model)

vielen Danke für eure Antworten und ich hoffe ich habe alle relevanten infos hier gepostet!
 

André Uhres

Top Contributor
Ganz allgemein würde ich sagen, dass die Spaltenüberschrift mit setHeaderValue geändert werden sollte:
Java:
table.getColumnModel().getColumn(columnIndex).setHeaderValue(..)
 
A

acdc

Gast
Danke für eure Antworten, die Funktion getColumn(..) hat keinen Fehler produziert - habe aber trotzdem deine (Michael) Lösung eingefügt.

@Andrè Uhres:
Ich habe bereits das Spaltenumbenennen mit
Java:
 table.getColumnModel().getColumn(columnIndex).setHeaderValue(..)
probiert. Da funktioniert es auch, aber wird da nur der Value und nicht der Name verändert. D.h., dass der Wert im DefaultTableModel nicht verändert wird und es daher nur eine oberflächliche Änderung ist. Ich muss aber die Überschriften im TableModel ändern., da ich dieses für andere Programmteile verwenden möchte.

Leider habe ich nocht keine Lösung gefunden - hoffe, dass mir jemand helfen kann!

danke
 

André Uhres

Top Contributor
Das Problem kommt ja offensichtlich durch diese Zeile:
tableModel.setColumnIdentifiers(newData);

Dann brauchst du die ja nur durch sowas zu ersetzen:
th.getColumnModel().getColumn(col).setHeaderValue(input.getText());
 
A

acdc

Gast
@André Uhres

das ist schon richtig, aber damit wird die Überschrift nur optisch verändert und nicht die Daten, die dahinter stehen. Die Daten werden nämlich im DefaultTableModel gespeichert.

...Mal sehen was ich noch probieren kann.

danke
 

André Uhres

Top Contributor
Die Daten werden nämlich im DefaultTableModel gespeichert.
Ich weiss, aber die wurden ja bereits aktualisiert. Lass einfach die Zeilen darüber unverändert stehen:
Java:
newData=tableModel.getColumnIdentifiers(); //Eigene Methode in OwnTableModel "return columnIdentifiers"
newData.insertElementAt(input.getText(),col); // neuer Text aus eigenem Dialog
newData.remove(col+1);
Damit ist dein DefaultTableModel aktualisiert, auch ohne setColumnIdentifiers.
 
A

acdc

Gast
Danke Danke - auf das wär ich wahrscheinlich nie gekommen!

Es funktioniert jetzt!!
Welch FREUDE
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
D MySQL-Tabellen in GUI anzeigen AWT, Swing, JavaFX & SWT 8
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
K JavaFX Spalten der Tabellen verschieben AWT, Swing, JavaFX & SWT 2
R Swing Tabellen updaten AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
T Swing 2 Tabellen parallel sortieren? (synchronisieren) AWT, Swing, JavaFX & SWT 3
F Tablemodel zu mehreren Tabellen AWT, Swing, JavaFX & SWT 6
K Tabellen Inhalt ( Zelle ) Modifizieren AWT, Swing, JavaFX & SWT 2
M Markieren von ganzen Zeilen in transparenten Tabellen AWT, Swing, JavaFX & SWT 6
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
M gleicher TableCellRenderer für mehrere unterschiedliche Tabellen AWT, Swing, JavaFX & SWT 5
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
D Tabellen Header & Abstand der Zeilen AWT, Swing, JavaFX & SWT 8
S SWT Zwei Tabellen gleichzeitig Scrollen AWT, Swing, JavaFX & SWT 3
D Swing Tabellen-Namen im ListSelectionListener abfragen AWT, Swing, JavaFX & SWT 2
A Tabellen Spalte löschen AWT, Swing, JavaFX & SWT 6
M SWT SWT - Zwei Tabellen gleicher Größe AWT, Swing, JavaFX & SWT 5
T JTable - mehrere Tabellen verknüpfen AWT, Swing, JavaFX & SWT 14
T SWT Tabellen Kopf Schrift bearbeiten AWT, Swing, JavaFX & SWT 2
J Swing Spaltenbeschriftung bei Tabellen AWT, Swing, JavaFX & SWT 2
S Tabellen und Text Ausgabe in Swing GUI AWT, Swing, JavaFX & SWT 3
T Swing Sql Tabellen in jList ausgeben und speichern AWT, Swing, JavaFX & SWT 4
T Wie Zeilen in Tabellen farblich differenzieren? AWT, Swing, JavaFX & SWT 3
P Tabellen in Java - Zeile anhängen AWT, Swing, JavaFX & SWT 19
T Tabellen Inhalt in einem "anderem Frame" aktuallie AWT, Swing, JavaFX & SWT 7
0 JTable - Hintergrund Tabellen statt Grau AWT, Swing, JavaFX & SWT 5
D Voneinander abhängige Tabellen AWT, Swing, JavaFX & SWT 2
D Tabellen-Header anklickbar / auswählbar? AWT, Swing, JavaFX & SWT 5
L Tabellen formatieren ? AWT, Swing, JavaFX & SWT 4
T 4 db tabellen in einem karteireiter eigene klasse für die me AWT, Swing, JavaFX & SWT 7
G ein ContentProvider für 2 fast gleiche tabellen AWT, Swing, JavaFX & SWT 7
G Tabellen Items Einträge Aktualisieren AWT, Swing, JavaFX & SWT 2
K Spaltenbreite von mehreren Tabellen gleichzeitig verändern AWT, Swing, JavaFX & SWT 3
T listener für tabellen bei selektierung AWT, Swing, JavaFX & SWT 7
D mit swt.virtual mehrspaltige tabellen füllen AWT, Swing, JavaFX & SWT 3
I Probleme mit Tabellen (SWT) AWT, Swing, JavaFX & SWT 8
E SWT: Tabellen-Inhalt kopieren AWT, Swing, JavaFX & SWT 2
J Resultsets in Tabellen abbilden AWT, Swing, JavaFX & SWT 4
M Tabellen verschachteln AWT, Swing, JavaFX & SWT 7
G Tabellen Einträge löschen - JTable AWT, Swing, JavaFX & SWT 6
K Layout-Frage: 3 Feste Tabellen, 6-10dynamische AWT, Swing, JavaFX & SWT 2
R Mehrzeilige Darstellung von Spalten in SWING-Tabellen AWT, Swing, JavaFX & SWT 5
A JTable im JTabbedPane -> Überschriften werden nicht angez AWT, Swing, JavaFX & SWT 2
A vertikale Überschriften bei JTable AWT, Swing, JavaFX & SWT 4
C Überschriften bei JTable AWT, Swing, JavaFX & SWT 3
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
B Deckraft ändern AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
missy72 JavaFX RowFactory Schriftfarbe ändern AWT, Swing, JavaFX & SWT 6
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
W JavaFX CSS ändern wirft NPE AWT, Swing, JavaFX & SWT 8
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
das_leon AWT Button Design ändern AWT, Swing, JavaFX & SWT 5
S JavaFX GridPane Zellen Seitenverhätnis passend ändern mit der Stage AWT, Swing, JavaFX & SWT 0
S Parameter ändern in try/catch AWT, Swing, JavaFX & SWT 5
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
T JavaFx Examples ändern liefert unerwartetes Ergebnis AWT, Swing, JavaFX & SWT 5
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
K Sprache ändern AWT, Swing, JavaFX & SWT 11
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
S JavaFX fxml datein mit menübar ändern AWT, Swing, JavaFX & SWT 20
W Kodierung (CharSet) beim Schreiben ändern AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben