Announcement

Collapse
No announcement yet.

Zeilenumbruch JTable

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeilenumbruch JTable

    Hallo Leute,
    Ein ganzes Wochenende ist drauf gegangen!!
    Ich weis einfach nicht mehr weiter!
    Ich habe ein funktionierendes JTable Model und lese eine DB aus. In der DB sind längere Texte mit zeilenumbrüche. Ich habe bisher im INet gefunden das ich ein eigenes CellRenderer erstellen muss. Ich habe dann folgendes gemacht :

    public class JTCellRenderer extends JTextArea implements TableCellRenderer
    {

    private static final long serialVersionUID = 1L;

    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus,
    int row, int column)
    {
    // Text setzen
    setWrapStyleWord(true);
    setLineWrap(true);
    setText((String)value);

    System.out.println("hallo");

    return this;
    }

    }

    In der Main mache ich folgendes:

    JTCellRenderer renderer = new JTCellRenderer();
    table.setDefaultRenderer(String.class, renderer);

    Aber es funzt nicht!!
    Ich setzte ja den defaultRenderer da muss er doch mein sysout ausgeben, oder??
    Macht er aber nicht...

    Kann mir jemand helfen??

    Danke

    Grüße

    FR

  • #2
    Okay ich habe das problem gefunden..
    es mus table.setDefaultRenderer(Object.class, renderer); so aussehen..

    aber wie bekomme ich eine variable zeilenhöhe hin?

    Comment


    • #3
      Also für alle die auch so problem haben kann ich abhelfen..
      Die lösungen die man im Inet findet sind viel zu kompliziert!!!

      Ich habe mir was eigenes kreiert....

      Wer das selbe Prob hat einfach nachfragen...

      FRusso add gmx dot ne

      Comment


      • #4
        hi,

        poste es doch hier.

        mf

        Comment


        • #5
          Im Prinzip ganz einfach..
          Ich lese jede Zeile Spalte für Spalte aus mit model.getValueAt(i, j) Ich hole mir die Zelle mit der größten variablenlänge und die setze ich dann mit table.setRowHeight(i,str_length/2+16); wobei geteilt durch 2+16 das ganze optimiert... das wars..

          &lt; <br><br> &gt;

          int str_length =0; // variable zum setzen des grössten wertes

          TableModel model = table.getModel();


          for (int clmCnt = model.getColumnCount(), rowCnt = model
          .getRowCount(), i = 0; i < rowCnt; i++) {
          for (int j = 0; j < clmCnt; j++) {
          if (model.getValueAt(i, j) != null){
          String value = model.getValueAt(i, j).toString();
          //Es werden ja alle spalten ausgelesen deswegen hole ich mir
          //den den grössten wert
          if(value.length()>=str_length)
          {
          str_length = value.length();

          }
          //hier wird die grösste variable als zeilenhöhe gesetz bei der aktuellen Spalte
          table.setRowHeight(i,str_length/2+16);
          }

          }
          //Nach jeder Zeile muss die Höhe wieder zurückgesetzt werden
          str_length = 0;

          }
          table.getColumnModel().getColumn(0).setPreferredWi dth(50);
          table.getColumnModel().getColumn(1).setPreferredWi dth(30);
          table.getColumnModel().getColumn(2).setPreferredWi dth(30);
          table.getColumnModel().getColumn(3).setPreferredWi dth(20);
          table.getColumnModel().getColumn(4).setPreferredWi dth(270);
          table.getColumnModel().getColumn(5).setPreferredWi dth(200);
          table.getColumnModel().getColumn(6).setPreferredWi dth(50);

          &lt; <br><br> &gt;

          Ich hoffe es ist eine Hilfe für die solche probleme hatte... hat mich nerven gekostet ;-

          Comment

          Working...
          X