JTable Zeile zurückgeben

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,
ich möchte gerne in einer Tabelle eine ganze Zeile zurückgeben, wenn diese angeklickt wurde. Nur weiß ich leider nicht wie ich das anstellen kann.

Habe hier mal den Code der Tabelle:

Code:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;


public class TabelleRaum extends JPanel {
    public TabelleRaum() {
        super(new GridLayout(1,0));

        String[] columnNames = {"ID","Raumnummer","Raumname","Anzahl Plätze","Anzahl PCs","Beamer","Tafel"};
        Object[][] data = {
            {"001", "0.01","Algo2", new Integer(40), new Integer(1), new Boolean(true), new Boolean(true)},
            {"002", "1.01","Werthebach", new Integer(30), new Integer(2), new Boolean(true), new Boolean(false)},
            {"003", "1.30","PC-Pool", new Integer(50), new Integer(50), new Boolean(true), new Boolean(true)},
            {"004", "1.41","Automatentheorie", new Integer(25), new Integer(0), new Boolean(true), new Boolean(false)},
            {"005", "2.01","Analyse", new Integer(10), new Integer(3), new Boolean(false), new Boolean(true)},
            {"004", "1.41","Mathe", new Integer(25), new Integer(0), new Boolean(true), new Boolean(false)},
            {"004", "1.41","Automatentheorie", new Integer(25), new Integer(0), new Boolean(true), new Boolean(false)},
            {"004", "1.41","Automatentheorie", new Integer(25), new Integer(0), new Boolean(true), new Boolean(false)},
            {"004", "1.41","Automatentheorie", new Integer(25), new Integer(0), new Boolean(true), new Boolean(false)},
            {"004", "1.41","Automatentheorie", new Integer(25), new Integer(0), new Boolean(true), new Boolean(false)},
        };

        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(700, 350));
        table.setFillsViewportHeight(true);

        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                RaumZurückgeben(table);
            }
         });

        JScrollPane scrollPane = new JScrollPane(table);
        add(scrollPane);
    }

    private void RaumZurückgeben(JTable table) {
        int numRows = table.getRowCount();
        int numCols = table.getColumnCount();
        javax.swing.table.TableModel model = table.getModel();
        
        System.out.println(table.)
        System.out.println("Value of data: ");
        for (int i=0; i < numRows; i++) {
            System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " + model.getValueAt(i, j));
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }

    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Räume");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        //Create and set up the content pane.
        TabelleRaum newContentPane = new TabelleRaum();
        newContentPane.setOpaque(true);
        frame.setContentPane(newContentPane);

        //Display the window.
        frame.pack();
        frame.setLocation(Hilfsklasse.getDimension().width/2 - (frame.getSize().width/2), (Hilfsklasse.getDimension().height/2 - (frame.getSize().height / 2 )));        
        frame.setVisible(true);
    }

    public static void main() {
        createAndShowGUI();
    }
}

Ich möchte gerne in diesem Teil des Codes die markierte Zeile zurückgeben/verwenden.
Die Ausgabe habe ich hier nur stehen, da der Code ein Beispielcode ist.

Code:
    private void RaumZurückgeben(JTable table) {
        int numRows = table.getRowCount();
        int numCols = table.getColumnCount();
        javax.swing.table.TableModel model = table.getModel();
        
        System.out.println(table.)
        System.out.println("Value of data: ");
        for (int i=0; i < numRows; i++) {
            System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " + model.getValueAt(i, j));
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }

Ich hoffe, mir kann jemand helfen. 😉
 
Da gibt es einen Haufen Methoden in JTable, mit denen man die Auswahl ermitteln kann.
Code:
int getSelectedColumn() 
          Returns the index of the first selected column, -1 if no column is selected. 
int getSelectedColumnCount() 
          Returns the number of selected columns. 
int[] getSelectedColumns() 
          Returns the indices of all selected columns. 
int getSelectedRow() 
          Returns the index of the first selected row, -1 if no row is selected. 
int getSelectedRowCount() 
          Returns the number of selected rows. 
int[] getSelectedRows() 
          Returns the indices of all selected rows.
Beachte aber auch, dass die Indizies der Zeilen/Spalten der Anzeige vom Model abweichen können.
Siehe dazu in JTable
Code:
int convertColumnIndexToModel(int viewColumnIndex) 
          Maps the index of the column in the view at viewColumnIndex to the index of the column in the table model. 
int convertColumnIndexToView(int modelColumnIndex) 
          Maps the index of the column in the table model at modelColumnIndex to the index of the column in the view. 
int convertRowIndexToModel(int viewRowIndex) 
          Maps the index of the row in terms of the view to the underlying TableModel. 
int convertRowIndexToView(int modelRowIndex) 
          Maps the index of the row in terms of the TableModel to the view.
 
Okay, nur wie wende ich das dann an? Stehe ich gerade auf dem Schlauch?

System.out.println(getSelectedColumn()); ?????????
 
Code:
Object[][] getSelectedRows(JTable table)
{
   Object[][]tableData = null;
   if(table.getSelectedRowCount() > 0)
   {
      TableModel model = table.getModel();
      synchronized(model)
      {
         final int columnCount = model.getColumnCount();
         tableData = new Object[table.getSelectedRowCount()][columnCount];
         int rowIndex = 0;
         for(int viewRowIndex : table.getSelectedRows())
         {
            int modelRowIndex = table.convertRowIndexToModel(viewRowIndex);
            for(int columnIndex=0; columnIndex < columnCount; columnIndex++)
            { 
               tableData[rowIndex][columnIndex] = model.getValueAt(modelRowIndex, columnIndex); 
            } 
            rowIndex++; 
         } 
      } 
   } 
   return tableData; 
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben