JPanel如何添加ToolTipText

时间:2013-06-04 20:35:24

标签: java swing jpanel tooltip

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

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)
    }
}

3 个答案:

答案 0 :(得分:2)

查看JComponent#getToolTipText(MouseEvent)

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

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

通过这种方式,您可以避免使用鼠标事件的问题

我还会看看Ellipse2D,它可用于确定椭圆是否包含给定点

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

既然您可以使用组件来表示Shape,则无需进行自定义绘制。只需创建一个面板添加添加组件到面板。您还可以为所有文本字符串创建JLabel。

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