swing/samples/net/sf/xframe/swing/demo JXTableHeaderToolTips1.java,NONE,1.1 JXTableHeaderToolTips2.java,NONE,1.1
Kurt Riede <[email protected]> Thu, 19 May 2005 00:09:37 +0000
| Newsgroups | gmane.text.xml.xframe.xsddoc.devel |
|---|---|
| Message-ID | <[email protected]> |
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:[email protected]>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:[email protected]>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;
}
}
}
}
-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click