Announcement

Collapse
No announcement yet.

Tooltip in JTable Zelle anzeigen

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

  • Tooltip in JTable Zelle anzeigen

    Hi,

    ich möchte in einer JTable, wenn ich den Mauszeiger auf eine bestimmte Zelle
    bewege, den Inhalt dieser Zelle in einem Tooltip anzeigen.

    wer kann mir helfen ?

    gruß

    orhan

  • #2
    Hallo orhan,

    du musst ein Renderer implementieren(du kannst z.B. die Klasse DefaultTableCellRenderer benutzen). In dem Renderer musst du die Methode getTableCellRendererComponent überschreiben. In der Methode kannst du z.B. ein JLabel zurückgeben mit einem ToolTip. Du kannst aber auch JButton od. JComboBox zurückgeben (die sind auch vom JComponent abgeleitet und JComponent hat die Methode setToolTipText.)

    Dabei ist ein laufendes Beispiel.

    Gruss

    Felix Lachowitsch

    /*
    * TableTest.java
    *
    * Created on 14. Oktober 2002, 14:43
    */

    import javax.swing.table.*;
    import javax.swing.*;
    import java.awt.*;
    /**
    *
    * @author Administrator
    */
    public class TableTest extends javax.swing.JFrame {

    /** Creates new form TableTest */
    public TableTest() {
    initComponents();
    }

    private void initComponents() {
    table = new javax.swing.JTable();

    getContentPane().setLayout(new java.awt.GridLayout());

    addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowClosing(java.awt.event.WindowEvent evt) {
    exitForm(evt);
    }
    });

    table.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
    {"String11", "String21", String31, String41},
    {"String12", "String22", String32, String42},
    {"String13", "String23", String33, String43},
    {"String14", "String24", String34, String44}
    },
    new String [] {
    "Title 1", "Title 2", "Title 3", "Title 4"
    }
    ) {
    Class[] types = new Class [] {
    java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
    };

    public Class getColumnClass(int columnIndex) {
    return types [columnIndex];
    }
    });
    DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(){
    public Component getTableCellRendererComponent(
    JTable table,
    Object value,
    boolean isSelected,
    boolean hasFocus,
    int row,
    int column
    )
    {
    JLabel label=new JLabel();
    //Label erzeugen
    label.setToolTipText((String)value);
    label.setText((String)value);

    return label;
    };
    };

    table.getColumn("Title 1").setCellRenderer(renderer);
    table.getColumn("Title 2").setCellRenderer(renderer);
    table.getColumn("Title 3").setCellRenderer(renderer);
    table.getColumn("Title 4").setCellRenderer(renderer);
    getContentPane().add(table);

    pack();
    }

    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
    System.exit(0);
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
    new TableTest().show();
    }


    // Variables declaration - do not modify
    private javax.swing.JTable table;
    // End of variables declaration

    Comment


    • #3
      Noch Mal der Quellcode:

      <PRE>

      /*
      * TableTest.java
      *
      * Created on 14. Oktober 2002, 14:43
      */

      package de.norcom.fs.gui;

      import javax.swing.table.*;
      import javax.swing.*;
      import java.awt.*;
      /**
      *
      * @author Administrator
      */
      public class TableTest extends javax.swing.JFrame {

      /** Creates new form TableTest */
      public TableTest() {
      initComponents();
      }

      /** This method is called from within the constructor to
      * initialize the form.
      * WARNING: Do NOT modify this code. The content of this method is
      * always regenerated by the Form Editor.
      */
      private void initComponents() {
      table = new javax.swing.JTable();

      getContentPane().setLayout(new java.awt.GridLayout());

      addWindowListener(new java.awt.event.WindowAdapter() {
      public void windowClosing(java.awt.event.WindowEvent evt) {
      exitForm(evt);
      }
      });

      table.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {
      {"String11", "String21", null, null},
      {"String12", "String22", null, null},
      {"String13", "String23", null, null},
      {"String14", "String24", null, null}
      },
      new String [] {
      "Title 1", "Title 2", "Title 3", "Title 4"
      }
      ) {
      Class[] types = new Class [] {
      java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
      };

      public Class getColumnClass(int columnIndex) {
      return types [columnIndex];
      }
      });
      DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(){
      public Component getTableCellRendererComponent(
      JTable table,
      Object value,
      boolean isSelected,
      boolean hasFocus,
      int row,
      int column
      )
      {
      JLabel label=new JLabel();
      //Label erzeugen
      label.setToolTipText((String)value);
      label.setText((String)value);

      return label;
      };
      };

      table.getColumn("Title 1").setCellRenderer(renderer);
      table.getColumn("Title 2").setCellRenderer(renderer);
      table.getColumn("Title 3").setCellRenderer(renderer);
      table.getColumn("Title 4").setCellRenderer(renderer);
      getContentPane().add(table);

      pack();
      }

      /** Exit the Application */
      private void exitForm(java.awt.event.WindowEvent evt) {
      System.exit(0);
      }

      /**
      * @param args the command line arguments
      */
      public static void main(String args[]) {
      new TableTest().show();
      }


      // Variables declaration - do not modify
      private javax.swing.JTable table;
      // End of variables declaration

      }
      </PRE&gt

      Comment


      • #4
        Noch einfacher: da der DefaultTableCellRenderer selber ein JLabel ist
        wird die Methode getTableCellRendererComponent noch simpler:
        <PRE>
        public Component getTableCellRendererComponent(
        JTable table,
        Object value,
        boolean isSelected,
        boolean hasFocus,
        int row,
        int column
        )
        {
        // this hier - der DefaultTableCellRenderer
        this.setToolTipText((String)value);
        this.setText((String)value);
        return this;
        };
        </PRE&gt

        Comment

        Working...
        X