G
Gast
Gast
Hallo,
Ich habe eine JTable mit Rowheader.
Ich möchte, dass die JTable auch nach den Werten im RowHeader sortiert werden kann;
mit meinem Quelltext wird aber die 1. Spalte der Haupttabelle sortiert.
Wer kann mir helfen?
Gruß,
René
Ich habe eine JTable mit Rowheader.
Ich möchte, dass die JTable auch nach den Werten im RowHeader sortiert werden kann;
mit meinem Quelltext wird aber die 1. Spalte der Haupttabelle sortiert.
Wer kann mir helfen?
Gruß,
René
Code:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class RowHeader extends JTable{
RowHeader(JTable t){
Object data[][] = new Object[][]{{"a"}, {"b"}, {"c"}, {"d"}, {"e"}, {"f"}, {"g"}, {"h"}, {"i"}, {"j"}};
DefaultTableModel d = new DefaultTableModel(data, new String[]{"Klick mich"});
setModel(d);
setRowHeight(t.getRowHeight());
//gibt RowHeader den selben Sorter wie Table
//funktioniert aber leider nicht
setRowSorter(t.getRowSorter());
setPreferredScrollableViewportSize(new Dimension(60,
(int)t.getPreferredScrollableViewportSize().getHeight()));
}
}
class Table extends JTable{
Table(){
String[] columnHeader = new String[]{"1", "2", "3"};
Object[][] data = new Object[10][3];
for(int i = 0; i < 10; i++){
for(int j = 0; j < 3; j++){
data[i][j] = (int)(Math.random() * 100) + "";
}
}
DefaultTableModel dm = new DefaultTableModel(data, columnHeader);
setModel(dm);
setRowSorter(new TableRowSorter(dm));
setRowHeight(20);
getTableHeader().setReorderingAllowed(false);
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
public class MyFrame extends JFrame{
public MyFrame(){
JScrollPane scroll = new JScrollPane();
Table table = new Table();
RowHeader rheader = new RowHeader(table);
scroll.setRowHeaderView(rheader);
scroll.setViewportView(table);
scroll.add(rheader.getTableHeader(), ScrollPaneLayout.UPPER_LEFT_CORNER);
add(scroll);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(400, 400);
setVisible(true);
}
public static void main(String args[]){
new MyFrame();
}
}