Проблема С Jtooltip

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

  1. Random444

    Random444 Гость

    Мне нужна была всплывающая подсказка со скроллом и возможность выделять текст для копипаста. Нашел пример со скроллом, но с выделением там беда какая-то, оно то работает, то нет. Отловить баг не получается. Гляньте, может кто что подскажет?
    Код (Text):
    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. AgniXRudra
    Ответов:
    2
    Просмотров:
    54
  2. Zloikaktus
    Ответов:
    0
    Просмотров:
    31
  3. c0de3r
    Ответов:
    5
    Просмотров:
    155
  4. DobermannTT
    Ответов:
    10
    Просмотров:
    160
  5. SoulPaladin
    Ответов:
    4
    Просмотров:
    145

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