Hallo zusammen,
ich möchte eine einspaltige Tabelle verwenden, in der die Zellen unterschiedliche Höhen haben. Aus diesem Grund benutze ich auch keine JList. Die Zellen sollen so breit sein wie die Tabelle und so hoch wie nötig, um alles darstellen zu können. Mein Problem ist nun, dass ich nicht weiß, wie ich diese Höhe berechnen kann. In den Zellen soll ein JLabel mit HTML verwendet werden.
ich möchte eine einspaltige Tabelle verwenden, in der die Zellen unterschiedliche Höhen haben. Aus diesem Grund benutze ich auch keine JList. Die Zellen sollen so breit sein wie die Tabelle und so hoch wie nötig, um alles darstellen zu können. Mein Problem ist nun, dass ich nicht weiß, wie ich diese Höhe berechnen kann. In den Zellen soll ein JLabel mit HTML verwendet werden.
Java:
public class Test extends JFrame {
public Test() {
setLayout(new BorderLayout());
JTable table = new JTable();
table.setModel(new DefaultTableModel(
new String[][] {
{
"A"
},
{
"AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA "
}, {
"A"
}, {
"A"
}
}, new String[] {
"Spalte"
}));
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
JLabel l = (JLabel) super
.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
l.setText("<html>" + value + "</html>");
// TODO Höhe der Zeile setzen
return l;
}
});
add(new JScrollPane(table), BorderLayout.CENTER);
setVisible(true);
setSize(200, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException,
IllegalAccessException, UnsupportedLookAndFeelException {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}