Ich hab dir was gebastelt, ist zwar ein bisschen dirty macht aber was du willst. Kann jetzt aber nicht garantieren ob das auch mit allen look and feels funktioniert.
[code=Java]import java.awt.BorderLayout;
public class TableRowSorterDemo extends JFrame
{
private JPanel contentPane;
private JScrollPane scrollPane;
private JTable table;
private MouseListener[] headerListeners;
/**
* Launch the application.
*/
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
TableRowSorterDemo frame = new TableRowSorterDemo();
frame.setVisible(true);
} catch (Exception e)
{
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TableRowSorterDemo()
{
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);
scrollPane = new JScrollPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
table = new JTable();
table.setModel(new DefaultTableModel(new Object[][] { { "Sepp", "11", "111" }, { "Fritz", "10", "120" },
{ "Hansi", "5", "100" }, { null, null, null }, { null, null, null }, }, new String[] { "Name", "Alter",
"Gr\u00F6\u00DFe" }));
scrollPane.setViewportView(table);
table.setAutoCreateRowSorter(true);
headerListeners = table.getTableHeader().getMouseListeners();
for (MouseListener l : headerListeners)
{
table.getTableHeader().removeMouseListener(l);
}
table.getTableHeader().addMouseListener(new MouseListener()
{
@Override
public void mouseClicked(MouseEvent e)
{
JTableHeader header = (JTableHeader) e.getSource();
if (header.getCursor().getType()!=Cursor.E_RESIZE_CURSOR)
{
for (MouseListener l : headerListeners)
{
l.mouseClicked(e);
}
} else
{
System.out.println("Resize Columns " + e.getSource());
// resize Columns
}
}
@Override
public void mousePressed(MouseEvent e)
{
for (MouseListener l : headerListeners)
{
l.mousePressed(e);
}
}
@Override
public void mouseReleased(MouseEvent e)
{
for (MouseListener l : headerListeners)
{
l.mouseReleased(e);
}
}
@Override
public void mouseEntered(MouseEvent e)
{
for (MouseListener l : headerListeners)
{
l.mouseEntered(e);
}
}
@Override
public void mouseExited(MouseEvent e)
{
for (MouseListener l : headerListeners)
{
l.mouseExited(e);
}
}
});
}
}
[/code]