2

我有一个小问题,我需要添加一个ToolTipTextJPanel. 我该怎么做?当我将鼠标悬停在圆圈上时,我想要一个工具提示。这是我的代码的一部分。

JPanel component1 = new JPanel();
JPanel component11 = new JPanel();
okno.add(component1,"align left,cell 0 0, h 75!, grow,wrap");


component1.setLayout(new MigLayout("","[][grow][grow]", "[grow]"));
component1.add((okno.add(creLab("Kraj", i, czcionka, etykietki))),"left align, cell 0 0");
component1.add(t1,"cell 1 0,grow");
//component1.add(new circle1(),"right align, cell 2 0,h 50!, w 53!, gapleft 50, wrap");
component1.add(component11," right align, cell 2 0, h 30!, gapleft 300, wrap");
component11.setLayout(new MigLayout("","[]","[]"));
component11.add(new circle1(),"cell 0 0,h 50!, w 50!, dock north");
component11.setToolTipText("<html>W polu obok wpisz kraj pochodzenia towaru</html>");

我还添加了以下代码circle1

class circle1 extends Applet{
    public void paint(Graphics g){
        setForeground(Color.yellow);
        g.drawOval(0, 0, 50, 50);
        g.fillOval(0, 0, 50, 50);
        g.setColor(Color.black);
        g.drawString("Jak", 14, 14);
        g.drawString("wpisac", 3, 28);
        g.setColor(Color.red);
        g.drawString("kraj?", 14, 42);


        //g.drawString(arg0, arg1, arg2)
    }
}
4

3 回答 3

2

看一眼JComponent#getToolTipText(MouseEvent)

这将允许您根据鼠标的位置确定要返回的文本。

很难为您的代码片段确定绘制圆圈的确切位置,但我会避免直接绘制到小程序的表面,而是使用自定义组件(如 a JPanel)代替(覆盖其paintComponent方法)。然后我会将其添加到小程序或控制面板中。

这样你就可以避免鼠标事件被消耗的问题

我还要看一下Ellipse2D,它可以用来确定椭圆是否包含给定的点

于 2013-06-04T20:55:33.707 回答
1

首先是确定鼠标何时在圆圈内。为此,您可以根据圆形区域验证 mouseMotionlister 上的鼠标位置

http://www.java2s.com/Code/JavaAPI/javax.swing/JPaneladdMouseMotionListenerMouseMotionListenerlis.htm

确定这种情况后,您可以继续更改工具提示

于 2013-06-04T20:39:59.247 回答
1

请参阅使用形状。您可以使用 ShapeIcon 创建 JLabel。然后你只需使用setToolTipText()JLabel 的方法。然后,您可以像任何其他组件一样将标签添加到面板。

既然您可以使用一个组件来表示一个 Shape,那么就不需要进行自定义绘画了。只需创建一个面板,将组件添加到面板。您还可以为所有文本字符串创建 JLabels。

不要进行自定义绘画,除非您有充分的理由这样做。

于 2013-06-05T00:35:03.993 回答