Frage

Ich möchte folgende Funktionen implementieren, aber ich bin verwirrt, wenn es in Java möglich ist. Wenn ja, als wie? Bitte Hilfe:

Ich möchte eine JTable Art von Tisch zu schaffen, in der 1. Reihe der Tabelle Spaltennamen enthält, und ein Symbol in jeder Spalte das heißt in jeder Zelle der ersten Reihe. Ein Klick auf das Symbol sollte auf die Entfernung von dieser Spalte aus der Tabelle (möglich mit Mouselistener ??) führen.

Ich habe viele Lösung gefunden, wo ich Schaltfläche in eine Zelle in JTable hinzufügen können, aber keine, die sowohl das Hinzufügen von Text und Symbol beschreibt (mit Mouselistener) zu einer Zelle. Bitte beachten Sie, wenn Sie helfen können, und vielen Dank für das Lesen.

War es hilfreich?

Lösung

Sie können eine benutzerdefinierte TableCellRenderer erstellen, die JLabel erstreckt. Diese JLabel kann mit einem Symbol erstellt werden (JLabel können Symbole angezeigt werden, nach rechts oder links des Textes). Sie werden die getTableCellRendererComponent testen wollen, ob die Zeile gerendert wird die erste ist oder nicht, und wenn ja, auf das Symbol gesetzt, andernfalls nicht.

Für die Entfernung Aktion können Sie eine MouseListener auf dem Tisch hinzufügen, und wenn die mouseClicked Methode der Verarbeitung, können Sie die Zelle finden, die durch die Prüfung der rowAtPoint und columnAtPoint in durch die Schaffung eines Point vom mouseEvent.getX() und mouseEvent.getY() geklickt wurde. Wenn Sie die erste Zeile bestimmen, die mit dem Symbol geklickt wurde, können Sie die Spalte aus der Spalte Modell entfernen.

Wenn durch 1. Reihe , die Sie tatsächlich den Tabellenkopf bedeuten, können Sie den gleichen Renderer für das JTableHeader erstellen, und stellen Sie die MouseListener auf die Komponente.

Andere Tipps

Nun, ich verstehe Ihre Frage nicht.

  

Ich möchte eine JTable Art zu schaffen,   Tisch, wo 1. Zeile der Tabelle enthält   Spaltennamen und ein Symbol

Haben Sie den Tabellenkopf bedeuten, wie die Art und Weise funktioniert durch die Anzeige des Spaltennamen und die Sortierrichtung Sortier?

Wenn ja Sie dann einen benutzerdefinierten Renderer für den Tabellenkopf verwenden und einen Mouselistener an die Header hinzufügen, um zu bestimmen, welche Spalte geklickt wurde. Sie sollten den Standardtabellenkopf Renderer anpassen können, zu tun, was Sie wollen.

Oder haben Sie die erste Zeile der Daten in der Tabelle bedeuten. Wenn ja, dann müssen Sie noch einen benutzerdefinierten Renderer verwenden, aber dieses Mal, wenn Sie die Mouselistener in der Tabelle nicht der Tabellenkopf hinzuzufügen.

In beiden Fällen können Sie den TableColumnModel.removeColumn () -Methode verwenden, um die Spalte aus der Sicht der Tabelle zu entfernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top