我有一点问题,我需要向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)
}
}
答案 0 :(得分:2)
查看JComponent#getToolTipText(MouseEvent)
这将允许您根据鼠标的位置确定要返回的文本。
很难确定代码片段,确切地说是绘制圆圈的位置,但我会避免直接绘制到applet的表面,而是使用自定义组件(如JPanel
)代替(覆盖其paintComponent
方法)。然后我会添加到applet或控制面板。
通过这种方式,您可以避免使用鼠标事件的问题
我还会看看Ellipse2D
,它可用于确定椭圆是否包含给定点
答案 1 :(得分:1)
首先要确定鼠标何时在圆圈内。为此,您可以根据圆形区域验证mouseMotionlister上的鼠标位置
确定此情况后,您可以继续更改工具提示
答案 2 :(得分:1)
见Playing With Shapes。您可以使用ShapeIcon创建JLabel。然后,您只需使用JLabel的setToolTipText()
方法。然后,您可以像任何其他组件一样将标签添加到面板。
既然您可以使用组件来表示Shape,则无需进行自定义绘制。只需创建一个面板添加添加组件到面板。您还可以为所有文本字符串创建JLabel。
不要做自定义绘画,除非你有充分的理由这样做。