From: Kurt R. <kr...@us...> - 2005-05-19 00:09:46
|
Update of /cvsroot/xframe/swing/samples/net/sf/xframe/swing/demo In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10224/samples/net/sf/xframe/swing/demo Added Files: JXTableHeaderToolTips1.java JXTableHeaderToolTips2.java Log Message: fix for bug [1200282] Header tooltips --- NEW FILE: JXTableHeaderToolTips2.java --- package net.sf.xframe.swing.demo; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import net.sf.xframe.swing.JXTable; import net.sf.xframe.swing.table.JXTableHeader; /** * Simple demo of the JXTable with tool tips on the header by subclassing * class {@link net.sf.xframe.swing.table.JXTableHeader JXTableHeader} and overwriting * method {@link net.sf.xframe.swing.table.JXTableHeader#getToolTipText getToolTipText}. * * @author <a href=mailto:kr...@us...>Kurt Riede</a> */ public final class JXTableHeaderToolTips2 { /** * Static main method. * @param args arguments */ public static void main(final String[] args) { new JXTableHeaderToolTips2().run(); } /** * Run the demo. */ public void run() { // create the demo frame final JFrame frame = new JFrame("JXTable Demo"); final BorderLayout layout = new BorderLayout(); frame.getContentPane().setLayout(layout); // create and add the table final TableModel model = new DefaultTableModel(15, 20); final JXTable jxTable = new JXTable(model, 2); frame.getContentPane().add(jxTable, BorderLayout.CENTER); // create some buttons to change the number of frozen columns final JPanel buttonPanel = new JPanel(); frame.getContentPane().add(buttonPanel, BorderLayout.NORTH); buttonPanel.setLayout(new FlowLayout()); for (int i = 0; i < 10; i++) { final JButton button = new JButton("Freeze " + i); final int num = i; button.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { jxTable.setFrozenColumns(num); } }); buttonPanel.add(button); } // Create table header with tooltips for each of the columns jxTable.setTableHeader(new JXTableHeader(jxTable.getColumnModel()) { public String getToolTipText(final MouseEvent e) { System.out.println("getToolTipText" + e.getX() + ", " + e.getY()); final int index = getColumnModel().getColumnIndexAtX(e.getX()); final int realIndex = getColumnModel().getColumn(index).getModelIndex(); return "Col " + realIndex; } }); // set size, center and show the demo frame frame.setSize(650, 300); final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); final Dimension frameSize = frame.getSize(); frame.setLocation((screen.width - frameSize.width) / 2, (screen.height - frameSize.height) / 2); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } --- NEW FILE: JXTableHeaderToolTips1.java --- package net.sf.xframe.swing.demo; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; import net.sf.xframe.swing.JXTable; import net.sf.xframe.swing.table.JXTableHeader; /** * Simple demo of the JXTable with tool tips on the header using a * {@link java.awt.event.MouseMotionListener MouseMotionListener}. * * @author <a href=mailto:kr...@us...>Kurt Riede</a> */ public final class JXTableHeaderToolTips1 { /** * Static main method. * @param args arguments */ public static void main(final String[] args) { new JXTableHeaderToolTips1().run(); } /** * Run the demo. */ public void run() { // create the demo frame final JFrame frame = new JFrame("JXTable Demo"); final BorderLayout layout = new BorderLayout(); frame.getContentPane().setLayout(layout); // create and add the table final TableModel model = new DefaultTableModel(15, 20); final JXTable jxTable = new JXTable(model, 2); frame.getContentPane().add(jxTable, BorderLayout.CENTER); // create some buttons to change the number of frozen columns final JPanel buttonPanel = new JPanel(); frame.getContentPane().add(buttonPanel, BorderLayout.NORTH); buttonPanel.setLayout(new FlowLayout()); for (int i = 0; i < 10; i++) { final JButton button = new JButton("Freeze " + i); final int num = i; button.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { jxTable.setFrozenColumns(num); } }); buttonPanel.add(button); } // Assign a tooltip for each of the columns final ColumnHeaderToolTips tips = new ColumnHeaderToolTips(); final TableColumnModel columnModel = jxTable.getColumnModel(); for (int c = 0; c < jxTable.getColumnCount(); c++) { tips.setToolTip(columnModel.getColumn(c), "Col " + c); } jxTable.getTableHeader().addMouseMotionListener(tips); // set size, center and show the demo frame frame.setSize(650, 300); final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); final Dimension frameSize = frame.getSize(); frame.setLocation((screen.width - frameSize.width) / 2, (screen.height - frameSize.height) / 2); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } private class ColumnHeaderToolTips extends MouseMotionAdapter { /** Current column whose tooltip is being displayed. * This variable is used to minimize the calls to setToolTipText(). */ private TableColumn curCol; /** Maps TableColumn objects to tooltips. */ private final Map tips = new HashMap(); // If tooltip is null, removes any tooltip text. public void setToolTip(final TableColumn col, final String tooltip) { if (tooltip == null) { tips.remove(col); } else { tips.put(col, tooltip); } } public void mouseMoved(final MouseEvent evt) { final JXTableHeader header = (JXTableHeader) evt.getSource(); final JXTable table = header.getTable(); final TableColumnModel colModel = table.getColumnModel(); final int vColIndex = colModel.getColumnIndexAtX(evt.getX()); TableColumn col = null; if (vColIndex >= 0) { col = colModel.getColumn(vColIndex); } if (col != null && col != curCol) { System.out.println(evt.getX() + "/" + evt.getY() + " " + col.getIdentifier()); header.setToolTipText((String) tips.get(col)); curCol = col; } } } } |