[英]Get currently displaying tooltip
有什么方法可以將當前顯示的工具提示作為字符串復制到剪貼板,而無需復雜的XY坐標計算,而該計算會映射到工具提示文本區域? 這在具有一定角度顯示的工具提示的圖表上尤其具有挑戰性,並且僅在顯示時才能捕獲。 例如,使ctl-c將顯示的工具提示復制到剪貼板:
PlotThisDaysData extends JFrame implements ... KeyListener{
@Override
public void keyTyped( KeyEvent e ) {
char typed = e.getKeyChar();
if ( typed == KeyEvent.VK_C ) /*VK_C?*/ {
String tooltipStr = myChart.???(); // <<<<<<<<<<<<< get displaying tooltip <<<<
StringSelection selection = new StringSelection( tooltipStr );
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents( selection, selection );
}
}
顯示工具提示時可能會發生一些事件,以便我可以存儲String指針並在輸入ctl-c時使用?
顯示工具提示以響應圖表的ChartPanel
收到的鼠標事件。 要在鼠標移動時將當前顯示的工具提示復制到剪貼板,
一添加ChartMouseListener
到圖表面板,如圖這里 。
當你的聽眾看到所需ChartEntity
,請ChartPanel
的相關文本,並將其復制到剪貼板。
Toolkit toolkit = Toolkit.getDefaultToolkit(); Clipboard clipboard = toolkit.getSystemClipboard(); … @Override public void chartMouseMoved(ChartMouseEvent cme) { … String t = chartPanel.getToolTipText(cme.getTrigger()); clipboard.setContents(new StringSelection(t), null); }
類似的方法可以被用在鍵結合 ,如圖這里 。 使用圖表面板的getMousePosition()
構造所需的MouseEvent
觸發器。
獲取圖表面板的InputMap
, ActionMap
和平台的快捷方式掩碼。
InputMap im = chartPanel.getInputMap(); ActionMap am = chartPanel.getActionMap(); int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
將所需的KeyStroke
放在圖表面板的InputMap
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, mask), "copytip");
把相應的Action
在圖表面板的ActionMap
am.put("copytip", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { Point p = chartPanel.getMousePosition(); String t = chartPanel.getToolTipText(new MouseEvent(chartPanel, 0, System.currentTimeMillis(), 0, px, py, 0, false)); clipboard.setContents(new StringSelection(t), null); } });
避免使用KeyListener
,因為它需要鍵盤焦點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.