studio sobre reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones java swing jtable tooltip tablecellrenderer

java - sobre - manual android studio avanzado



Java Swing: mostrando la información sobre herramientas en JTable según el texto debajo del puntero del mouse (1)

Reemplace el getToolTipText(MouseEvent) del componente que devuelve TableCellRenderer . Si está extendiendo DefaultTableCellRenderer que extiende JLabel y se devuelve a sí mismo como componente de renderizado, puede anularlo directamente en su subclase.

Debería poder determinar en qué línea el puntero del mouse está utilizando MouseEvent#getPoint() . Consulte JTextComponent#viewToModel o JTextArea#getLineOfOffset (si está utilizando un JTextArea para representar en lugar de un JLabel ).

Tengo una JTable donde visualizo algunos datos de cadena formateados usando html. Necesito mostrar una información sobre herramientas basada en el texto debajo del puntero del mouse

Al pasar el mouse sobre "Line1" y "Line2", necesito mostrar diferentes consejos sobre herramientas. ¿Hay alguna manera de lograr esto o tengo que usar un renderizador personalizado para representar cada línea con una celda y mostrar la información de la herramienta en función de eso?

Aquí está el código de muestra para crear la tabla

package com.sample.table; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.*; public class SampleTable { private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("SampleTable"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(createTablePanel(), BorderLayout.CENTER); //Display the window. frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static JPanel createTablePanel(){ JPanel tablePanel = new JPanel(); JTable table = createTable(); table.setFillsViewportHeight(true); table.setRowHeight(45); addListener(table); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setPreferredSize(new Dimension(300, 120)); tablePanel.add(scrollPane); return tablePanel; } private static void addListener(JTable table) { table.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseMoved(MouseEvent e) { if(e.getSource() instanceof JTable){ JTable table = (JTable)e.getSource(); table.setToolTipText("Some tooltip"); } } @Override public void mouseDragged(MouseEvent e) { // do nothing } }); } public static JTable createTable(){ String[] columnNames = {"Column1", "Column2"}; Object[][] data = {{"1", "<html>Line1<br/>Line2</html>"}, {"2", "<html>Line1<br/>Line2</html>"}}; JTable table = new JTable(data, columnNames); return table; } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }