Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

JTable

Empfohlene Antworten

Veröffentlicht

hiho, ich hoffe ihr könnt mir helfen

ich hab schon alle möglichen seiten besucht und auch hier in der suche rumgeschaut, aber irgendwie komm ich nicht auf mein ziel.

Die Frage wurde schon leider hier öfters gestellt, konnte mir aber keine Lösung daraus bauen

er fügt den inhalt erst sauber ein, und wenn ich das model ändern will, wird das jtable nicht angezeigt.

		jTable = new JTable(dvdkeys, columns);

		System.out.println(jTable.getRowCount());

		jTable.setModel(new MyTableModel());

		System.out.println(jTable.getRowCount());

class MyTableModel extends DefaultTableModel {


    public boolean isCellEditable(int row, int column) {

        return false;

    }

}

ich möchte einfach erreichen das der Tabelleninhalt nicht mehr editierbar sein kann, damit ich über den MouseListener einen doppelklick abfangen kann. Weil solange die Möglichkeit besteht das die Zeile geändert werden kann, "verschluckt" er den Doppelklick.

besten dank schonmal

Sorry. Aber ich weiß nicht, wo Dein Problem liegt.

Aber mein Mann im Ohr sagt mir, das Dein Hilferuf in diesem Satz verborgen sei:

er fügt den inhalt erst sauber ein, und wenn ich das model ändern will, wird das jtable nicht angezeigt.

Allerdings kann ich aus dieser Aussage und dem Code nicht viel entnehmen, was mir helfen würde, Dir zu helfen.

ok sry, probiere ich es genauer zu erläutern.

ich möchte ein JTable mit dem Inhalt der Variable dvdkeys erzeugen (bei dvdkeys handelt es sich um den Typ String[][]), columns sind die Titelanzeigen.

Mein Problem besteht darin, dass das jTable ganz normal angezeigt wird wenn ich diesen Teil weglasse:

jTable.setModel(new MyTableModel());

Sobald ich diese Zeile hinzufüge, wird das jTable nicht mehr angezeigt. Und meine Frage lautet nu, wieso? :)

Gruß Bernd

P.S. hoffe es ist nu besser erklärt sonst probier ich es einfach nochmal

Schon viel besser. Jetzt habe ich Dein Anliegen verstanden.

Ein kurzes Überfliegen des Table Tutorials (dort hast Du wohl auch Dein Model her), sagt mir, daß das Model nicht nur dazu da ist, die Methode isCellEditable() anzubieten. Du mußt, wenn Du ein Model verwenden möchtest, auch Deine Daten darin kapseln. D. h. dvdkeys und columns müssen in die Klasse MyTableModel.

leider komm ich irgendwie noch nicht weiter, hättest du zufällig ein Beispiel für mich wie ich das mit dem Kapseln machen muss?

am besten wäre ein beispiel für die Zuweisung der Daten(sprich das hinzufügen der Daten) in die jTable, wenn ich die Daten in das TableModel ausgelagert habe.

Weil der Aufruf geht dann ja nicht mehr:

jTable = new JTable(dvdkeys, columns);
bis jetzt sieht es so aus: Aufruf der Klasse
jTable = new JTable(new MyTableModel(dvdkeys));
MyTableModel - Klasse
class MyTableModel extends DefaultTableModel {

	private String[] columns = new String[2];

	private String[][] dvdkeys;

    /**

     * aus der API: Returns true if the cell at rowIndex and columnIndex

     * is editable. Otherwise, setValueAt on the cell will not change the

     * value of that cell.

     */

	public MyTableModel(String[][] keys){

		columns[0] = "DVD-Key";

		columns[1] = "in Gebrauch";

		dvdkeys = keys;

	}

    public boolean isCellEditable(int row, int column) {

        return false;

    }

}

www.java-forum.org -> FAQ-Forum -> JTable Tutorial Teil 1 - 8

Natürlich geht das nicht mehr. Dein Model muß dann wohl folgende Methode implementieren:


public Object getValueAt(int row, int col) {

    return dvdkeys[row][col];

}

Aber wie gesagt, schau Dir mal das Tutorial an. Da wird alles erklärt.

Danke! Habe es geschafft.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.