Swing RowSorter getSortOrder() ?

cosinus

Mitglied
Hallo Java-Forum,

ich habe eine JTable mit mehreren Spalten und RowSorter welchen ich mit
Java:
 maTable.setAutoCreateRowSorter(true);
hinzufüge.
Wie erwünscht kann ich meine Daten in der Tabelle sortieren.

Nun soll das Programm beim Beenden erfragen, nach welcher Spalte und ob abwärts oder aufwärts sortiert wird, und dies speichern, sodass beim erneuten Programmstart die gleiche Tabellenansicht rekonstruiert werden kann.

Leider habe ich in der API vom RowSorter keine Möglichkeit gefunden, mir die Spalte auszugeben, nach der die Tabelle sortiert ist. Habe ich bloß die Funktion übersehen oder was muss ich tun?

Gruß

cosinus
 

bERt0r

Top Contributor
Mit table.getRowSorter().getSortKeys(); kannst du auf die aktuellen Sortiereinstellungen zugreifen.

Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

public class SortRowTest extends JFrame
{
	
	private JPanel contentPane;
	private JTable table;
	private JButton btnGetSortkeys;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						SortRowTest frame = new SortRowTest();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public SortRowTest()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JScrollPane scrollPane = new JScrollPane();
		contentPane.add(scrollPane, BorderLayout.CENTER);
		
		table = new JTable();
		table.setModel(new DefaultTableModel(new Object[][] { { "1", "Sepp" }, { "2", "Anton" }, { "4", "Fritz" },
				{ "3", "Karl"}, }, new String[] { "Nummer", "Name" }));
		table.setAutoCreateRowSorter(true);
		scrollPane.setViewportView(table);
		
		btnGetSortkeys = new JButton("get Sortkeys");
		btnGetSortkeys.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent arg0)
				{
					System.out.print("Sortkeys:");
					List<? extends RowSorter.SortKey> sortKeys = table.getRowSorter().getSortKeys();
					for (RowSorter.SortKey key : sortKeys)
					{
						System.out.print(" " + key.getColumn() + " " + table.getColumnName(key.getColumn()));
					}
					System.out.println();
				}
			});
		contentPane.add(btnGetSortkeys, BorderLayout.SOUTH);
		
	}
	
}
 

Ähnliche Java Themen


Oben