簡體   English   中英

獲取當前顯示的工具提示

[英]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收到的鼠標事件。 要在鼠標移動時將當前顯示的工具提示復制到剪貼板,

  1. 一添加ChartMouseListener到圖表面板,如圖這里

  2. 當你的聽眾看到所需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觸發器。

  1. 獲取圖表面板的InputMapActionMap和平台的快捷方式掩碼。

     InputMap im = chartPanel.getInputMap(); ActionMap am = chartPanel.getActionMap(); int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); 
  2. 將所需的KeyStroke放在圖表面板的InputMap

     im.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, mask), "copytip"); 
  3. 把相應的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM