Проблема С Jtooltip

Тема в разделе "Java", создана пользователем Random444, 17 июн 2012.

  1. Random444

    Random444 Гость

    Репутация:
    0
    Мне нужна была всплывающая подсказка со скроллом и возможность выделять текст для копипаста. Нашел пример со скроллом, но с выделением там беда какая-то, оно то работает, то нет. Отловить баг не получается. Гляньте, может кто что подскажет?
    Код:
    package example;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    import javax.swing.border.BevelBorder;
    
    import org.jdesktop.swingx.JXTextArea;
    
    public class JScrollableToolTip extends JToolTip implements MouseWheelListener {
    
    private JXTextArea tipArea;
    
    /** Creates a tool tip. */
    public JScrollableToolTip(final int width, final int height) {
    setPreferredSize(new Dimension(width, height));
    setLayout(new BorderLayout());
    tipArea = new JXTextArea();
    tipArea.setLineWrap(true);
    tipArea.setWrapStyleWord(true);
    tipArea.setEditable(true);
    //tipArea.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
    
    LookAndFeel.installColorsAndFont(tipArea, 
    "ToolTip.background",
    "ToolTip.foreground",
    "ToolTip.font");
    
    //LookAndFeel.installBorder(tipArea, "InternalFrame.border");				
    
    JScrollPane scrollpane = new JScrollPane(tipArea);
    scrollpane.setBorder(UIManager.getBorder("InternalFrame.border"));
    scrollpane.getViewport().setOpaque(false);
    add(scrollpane);
    
    }
    
    @Override
    public void addNotify() {
    super.addNotify();
    JComponent comp = getComponent();
    if (comp != null) {
    comp.addMouseWheelListener(this);
    }
    }
    
    @Override
    public void removeNotify() {
    JComponent comp = getComponent();
    if(comp != null) {
    comp.removeMouseWheelListener(this);
    } 
    super.removeNotify();
    }
    
    public void mouseWheelMoved(final MouseWheelEvent e) {
    JComponent comp = getComponent();
    if(comp != null) {
    tipArea.dispatchEvent(new MouseWheelEvent(tipArea, 
    e.getID(), e.getWhen(), e.getModifiers(),
    0, 0, e.getClickCount(), e.isPopupTrigger(),
    e.getScrollType(), e.getScrollAmount(), e.getWheelRotation()));
    }
    }
    
    @Override
    public void setTipText(/*final*/ String tipText) {
    String oldValue = this.tipArea.getText();
    tipArea.setText(tipText);
    tipArea.setCaretPosition(0);
    firePropertyChange("tiptext", oldValue, tipText);
    }
    
    @Override
    public String getTipText() {
    return tipArea == null ? "" : tipArea.getText();
    }
    
    @Override
    protected String paramString() {
    String tipTextString = (tipArea.getText() != null ? tipArea.getText() : "");
    
    return super.paramString()
    + ",tipText=" + tipTextString;
    }
    
    //for testing only:
    public static void main(String args[]) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    
    JFrame f = new JFrame("JScrollableToolTip");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(300, 200);
    f.setLocationRelativeTo(null);
    ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE);
    
    JTable table = new JTable(50, 4) {
    
    @Override
    public JToolTip createToolTip() {
    JScrollableToolTip tip = new JScrollableToolTip(200, 80);						 
    tip.setComponent(this);
    return tip; 
    }
    };
    table.setToolTipText("Used to display a 'Tip' for a Component. "
    + "Typically components provide api to automate the process of "
    + "using ToolTips. For example, any Swing component can use the "
    + "JComponent setToolTipText method to specify the text for a standard tooltip.");
    f.add(new JScrollPane(table));
    f.setVisible(true);
    }
    });
    
    }
    }
     
Загрузка...
Похожие Темы - Проблема Jtooltip
  1. pack
    Ответов:
    5
    Просмотров:
    50
  2. Alex1994
    Ответов:
    7
    Просмотров:
    108
  3. PingvinPingvin
    Ответов:
    10
    Просмотров:
    115
  4. Free2playman
    Ответов:
    14
    Просмотров:
    138
  5. Дмитрий17
    Ответов:
    10
    Просмотров:
    195

Поделиться этой страницей