Swing Letzte Zeile einer JTable nicht über RowSorter sotieren

dbausnnd

Aktives Mitglied
Hi,

ich habe eine Tabelle in der in der letzten Zeile eine Zeile für die Neuanlage hinterlegt ist. Wenn ich eine Spalte sortiere, wird diese Zeile ebenfalls sortiert und sie ist nicht mehr in der letzten Zeile. Besteht die Möglichkeit für die SOrtierung einzelne Zeilen zu deaktivieren?

Besten Dank schon mal im voraus

dbausnnd
 
Moin,

die richtige Antwort ist: ..... krach ..... klirr ..... schepper .....
Oh schade, jetzt ist mir die Glaskugel runtergefallen und muss zur Reparatur ;(

Dann wirst Du wohl doch Deinen Code posten müssen 😱

Gruß
Klaus
 
Hi,

letztlich habe ich auch von einer JTable gesprochen. Ich nutze allerdings die JXTable vom SwingX Framework 😳

Hier ein Beispielcode. Wenn ich jetzt einzelen Spalten sortiere, wird die letzte Zeile mitsortiert. Die Zeile soll jedoch am Ende stehen bleiben. Wird es jetzt ein wenig klarer?

Code:
package tableExample;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

import org.jdesktop.swingx.JXTable;

public class SortingProblem extends JFrame {

	private JPanel contentPane;
	private JScrollPane scrollPane;
	private JXTable table;
	
	private TableRowSorter<TableModel> rowSorter; 

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					SortingProblem frame = new SortingProblem();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public SortingProblem() {
		initialize();
	}
	private void initialize() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));
		contentPane.add(getScrollPane(), BorderLayout.CENTER);
	}
	private JScrollPane getScrollPane() {
		if (scrollPane == null) {
			scrollPane = new JScrollPane();
			scrollPane.setViewportView(getTable());
		}
		return scrollPane;
	}
	private JXTable getTable() {
		if (table == null) {
			table = new JXTable();
			table.setModel(new DefaultTableModel(
				new Object[][] {
					{"1", "3", "2"},
					{"2", "2", "1"},
					{"3", "1", "3"},
					{null, null, null},
				},
				new String[] {
					"Spalte A", "Spalte B", "Spalte C"
				}
			));
			rowSorter = new TableRowSorter<TableModel>(table.getModel());
			table.setRowSorter(rowSorter);
		}
		return table;
	}
}
 

Zurück
Oben