Я пытаюсь создать свою собственную всплывающую подсказку для программы, которую я перенес на Java, я пытаюсь соответствовать оригинальной подсказке программ (она была написана на Delphi).У меня есть некоторый код, который позволяет мне рисовать «внутри» всплывающей подсказки, но по какой-то причине, если я переопределю paint(Graphics g, JComponent c)
и оставлю это поле пустым, он все равно будет рисовать всплывающую подсказку, а все, что я пытаюсь нарисовать, будет нарисовано «внутри»маленькая подсказка в штучной упаковке, и я не могу нарисовать «снаружи».
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.BasicToolTipUI;
class MultiLineToolTipUI extends BasicToolTipUI {
@Override
public void paint(Graphics g, JComponent c) {
//int mY = 0;
//int mX = 0;
//int xPoints[] = {mX, mX, mX + 15};
//int yPoints[] = {mY, mY + 25, mY + 25};
//Polygon p = new Polygon(xPoints, yPoints, 3);
//g.setColor(Color.BLACK);
//g.fillPolygon(p);
//g.fillRoundRect(mX, mY, 100, 50, 30, 30);
}
public static void main (String args[])
{
JButton button = new JButton ("Mouse Over ME!") {
public JToolTip createToolTip() {
MultiLineToolTip tip = new MultiLineToolTip();
tip.setComponent(this);
return tip;
}
};
//JButton button = new JButton("Mouse Over ME!");
button.setToolTipText("Hello, World");
JFrame frame = new JFrame("Basic SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( button );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
static class MultiLineToolTip extends JToolTip
{
public MultiLineToolTip()
{
setUI(new MultiLineToolTipUI());
}
}
}
Это то, что у меня есть, и, как я уже сказал, даже без линий в paint
оно опирается на свои собственные.
Любой совет, чтобы обойти это?Или лучший способ понять, что я пытаюсь сделать?
РАЗЪЯСНЕНИЕ: Первый ответ Камикра был очень полезен, однако я должен уточнить, что моя цель состоит в том, чтобы заставить ящик, который автоматически извлекается из-за пределов paint
, уйти или быть невидимым.