Hallo,
Ich habe ein Problem mit der Darstellung einer JTextArea innerhalb einer JList. Der Renderer:
Das Problem liegt nun im LineWrap: Dieses funktioniert zwar, allerdings passt sich die TextArea in ihrer Größe nicht an. Heißt: Wenn der Text umgebrochen wird auf 2 Zeilen, ist die TextArea trotzdem nur so hoch dass sie nur eine Zeile anzeigt. Wenn der Text Zeilenumbrüche (\n) enthält, passt sich die TextArea dahingegen an und wird höher.
Um herauszufinden was da los ist hab ich das obige sysout eingebaut. Und da kommen dann ganz seltsame Werte heruas, genauer ist der Wert für die Höhe irrsinnig hoch. Bei Text, der in eine Zeile passen würde liefert das schon 188 Pixel, bei Text der mittels Line-Wrap auf 4 Zeilen umgebrochen wird sind es fast 3000. Ja 3000, nicht 300.
Es stellen sich mir nun folgende Fragen: Wie errechnet sich denn bitte diese Höhe für die preferredSize? Und: Wie kommt's, dass der Renderer diese Größe gar nicht annimmt? Komisch finde ich halt vor allem dass es grundsätzlich bei mehreren Zeilen (per Zeilenumbruch) schon klappt , aber bei mehreren Zeilen die durch LineWrap verursacht sind kriegt er nix mit.. Wobei das ja anscheinend in die prefferedSize einfließt, die aber ignoriert wird.
Ideas?
Ich habe ein Problem mit der Darstellung einer JTextArea innerhalb einer JList. Der Renderer:
Java:
public class MyListRenderer implements ListCellRenderer{
private JTextArea txt;
public MyListRenderer () {
txt = new JTextArea();
txt.setLineWrap(true);
txt.setWrapStyleWord(true);
}
@Override
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected, boolean cellHasFocus) {
txt.setText(value.toString());
System.out.println(txt.getPreferredSize());
return txt;
}
}
Das Problem liegt nun im LineWrap: Dieses funktioniert zwar, allerdings passt sich die TextArea in ihrer Größe nicht an. Heißt: Wenn der Text umgebrochen wird auf 2 Zeilen, ist die TextArea trotzdem nur so hoch dass sie nur eine Zeile anzeigt. Wenn der Text Zeilenumbrüche (\n) enthält, passt sich die TextArea dahingegen an und wird höher.
Um herauszufinden was da los ist hab ich das obige sysout eingebaut. Und da kommen dann ganz seltsame Werte heruas, genauer ist der Wert für die Höhe irrsinnig hoch. Bei Text, der in eine Zeile passen würde liefert das schon 188 Pixel, bei Text der mittels Line-Wrap auf 4 Zeilen umgebrochen wird sind es fast 3000. Ja 3000, nicht 300.
Es stellen sich mir nun folgende Fragen: Wie errechnet sich denn bitte diese Höhe für die preferredSize? Und: Wie kommt's, dass der Renderer diese Größe gar nicht annimmt? Komisch finde ich halt vor allem dass es grundsätzlich bei mehreren Zeilen (per Zeilenumbruch) schon klappt , aber bei mehreren Zeilen die durch LineWrap verursacht sind kriegt er nix mit.. Wobei das ja anscheinend in die prefferedSize einfließt, die aber ignoriert wird.
Ideas?
Zuletzt bearbeitet: