JTable selektieren mal anders, aber wie?

J-C

Mitglied
Ich möchte eine Tabelle wie folgt mit der Maus selektieren können:


[x][x][x][_][_][_] (Stellt euch einfach vor das wär ne Tabelle...
[_][_][_][_][x][x] ... die Kreuze stellen selektierte Zellen da..
[x][x][x][x][_][_] ... die _ die nichtselektierten bereiche)
[_][_][_][_][_][_]

nun meine Frage, wie macht man das.. alle versuche mittels

calTable.changeSelection(3,3,false, false);
calTable.changeSelection(4,0,false, true);

.... oder setColumnSelectionInterval()... scheiterten
ich steh im Moment total auf dem Schlauch, wäre für jede Anregung dankbar..
Hoffe dass es überhaupt möglich ist so zu selektieren wie ich das will!
 
ist es überhaupt möglich so zu selektieren? meine versuche bis jetzt brachten mir immer nur rechteckige selektionen, oder total unverständliche selektionen, die irgendwie nicht nachvollziehbar waren.... bin echt am verzweifeln!
 
Hallo!

So?
Code:
/**
 * 
 */
package de.tutorials;

import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

/**
 * @author Tom
 */
public class MulitSelectionJTableExample extends JFrame {

	private JTable table;

	private int colorClm = -1, colorRow = -1;

	private static String[] header = { "Header 1", "Header 2", "Header 3" };

	private static Object[][] data = { { "A", "B", "C" }, { "D", "E", "F" },
			{ "G", "H", "I" } };

	private boolean[][] selectedCells = new boolean[data.length][data[0].length];

	public MulitSelectionJTableExample() {
		super("MulitSelectionJTableExample");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		table = new JTable(data, header) {
			public boolean isCellSelected(int row, int column) {
				return selectedCells[row][column];
			}
		};

		table.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				Point p = e.getPoint();

				if (e.isAltDown()) {
					selectedCells[table.rowAtPoint(p)][table.columnAtPoint(p)] = true;
				} else {
					selectedCells[table.rowAtPoint(p)][table.columnAtPoint(p)] = false;
				}
			}
		});

		add(new JScrollPane(table));

		pack();
		setVisible(true);

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new MulitSelectionJTableExample();
	}

}

Gruß Tom
 
Zurück