25 package javax.swing.table; 26 27 import sun.swing.table.DefaultTableCellHeaderRenderer; 28 29 import java.util.*; 30 import java.awt.*; 31 import java.awt.event.*; 32 33 import javax.swing.*; 34 import javax.swing.event.*; 35 import javax.swing.plaf.*; 36 import javax.accessibility.*; 37 38 import java.beans.BeanProperty; 39 import java.beans.PropertyChangeListener; 40 import java.beans.Transient; 41 42 import java.io.ObjectOutputStream; 43 import java.io.IOException; 44 45 /** 46 * This is the object which manages the header of the <code>JTable</code>. 47 * <p> 48 * <strong>Warning:</strong> 49 * Serialized objects of this class will not be compatible with 50 * future Swing releases. The current serialization support is 51 * appropriate for short term storage or RMI between applications running 52 * the same version of Swing. As of 1.4, support for long term storage 53 * of all JavaBeans™ 54 * has been added to the <code>java.beans</code> package. 55 * Please see {@link java.beans.XMLEncoder}. 56 * 57 * @author Alan Chung 58 * @author Philip Milne 59 * @see javax.swing.JTable 60 */ 61 @SuppressWarnings("serial") // Same-version serialization only 62 public class JTableHeader extends JComponent implements TableColumnModelListener, Accessible 63 { 64 /** 397 if (renderer == null) { 398 renderer = defaultRenderer; 399 } 400 Component component = renderer.getTableCellRendererComponent( 401 getTable(), aColumn.getHeaderValue(), false, false, 402 -1, column); 403 404 // Now have to see if the component is a JComponent before 405 // getting the tip 406 if (component instanceof JComponent) { 407 // Convert the event to the renderer's coordinate system 408 MouseEvent newEvent; 409 Rectangle cellRect = getHeaderRect(column); 410 411 p.translate(-cellRect.x, -cellRect.y); 412 newEvent = new MouseEvent(component, event.getID(), 413 event.getWhen(), event.getModifiers(), 414 p.x, p.y, event.getXOnScreen(), event.getYOnScreen(), 415 event.getClickCount(), 416 event.isPopupTrigger(), MouseEvent.NOBUTTON); 417 418 tip = ((JComponent)component).getToolTipText(newEvent); 419 } 420 } 421 422 // No tip from the renderer get our own tip 423 if (tip == null) 424 tip = getToolTipText(); 425 426 return tip; 427 } 428 429 /** 430 * Returns the preferred size of the table header. 431 * This is the size required to display the header and requested for 432 * the viewport. 433 * The returned {@code Dimension} {@code width} will always be calculated by 434 * the underlying TableHeaderUI, regardless of any width specified by 435 * {@link JComponent#setPreferredSize(java.awt.Dimension)} 436 * | 25 package javax.swing.table; 26 27 import sun.swing.table.DefaultTableCellHeaderRenderer; 28 29 import java.util.*; 30 import java.awt.*; 31 import java.awt.event.*; 32 33 import javax.swing.*; 34 import javax.swing.event.*; 35 import javax.swing.plaf.*; 36 import javax.accessibility.*; 37 38 import java.beans.BeanProperty; 39 import java.beans.PropertyChangeListener; 40 import java.beans.Transient; 41 42 import java.io.ObjectOutputStream; 43 import java.io.IOException; 44 45 import sun.awt.AWTAccessor; 46 import sun.awt.AWTAccessor.MouseEventAccessor; 47 48 /** 49 * This is the object which manages the header of the <code>JTable</code>. 50 * <p> 51 * <strong>Warning:</strong> 52 * Serialized objects of this class will not be compatible with 53 * future Swing releases. The current serialization support is 54 * appropriate for short term storage or RMI between applications running 55 * the same version of Swing. As of 1.4, support for long term storage 56 * of all JavaBeans™ 57 * has been added to the <code>java.beans</code> package. 58 * Please see {@link java.beans.XMLEncoder}. 59 * 60 * @author Alan Chung 61 * @author Philip Milne 62 * @see javax.swing.JTable 63 */ 64 @SuppressWarnings("serial") // Same-version serialization only 65 public class JTableHeader extends JComponent implements TableColumnModelListener, Accessible 66 { 67 /** 400 if (renderer == null) { 401 renderer = defaultRenderer; 402 } 403 Component component = renderer.getTableCellRendererComponent( 404 getTable(), aColumn.getHeaderValue(), false, false, 405 -1, column); 406 407 // Now have to see if the component is a JComponent before 408 // getting the tip 409 if (component instanceof JComponent) { 410 // Convert the event to the renderer's coordinate system 411 MouseEvent newEvent; 412 Rectangle cellRect = getHeaderRect(column); 413 414 p.translate(-cellRect.x, -cellRect.y); 415 newEvent = new MouseEvent(component, event.getID(), 416 event.getWhen(), event.getModifiers(), 417 p.x, p.y, event.getXOnScreen(), event.getYOnScreen(), 418 event.getClickCount(), 419 event.isPopupTrigger(), MouseEvent.NOBUTTON); 420 MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); 421 meAccessor.setCausedByTouchEvent(newEvent, 422 meAccessor.isCausedByTouchEvent(event)); 423 424 tip = ((JComponent)component).getToolTipText(newEvent); 425 } 426 } 427 428 // No tip from the renderer get our own tip 429 if (tip == null) 430 tip = getToolTipText(); 431 432 return tip; 433 } 434 435 /** 436 * Returns the preferred size of the table header. 437 * This is the size required to display the header and requested for 438 * the viewport. 439 * The returned {@code Dimension} {@code width} will always be calculated by 440 * the underlying TableHeaderUI, regardless of any width specified by 441 * {@link JComponent#setPreferredSize(java.awt.Dimension)} 442 * |