2013-06-04 3 views
2

У меня есть небольшая проблема, мне нужно добавить ToolTipText в JPanel. Как мне это сделать? Я хочу иметь всплывающую подсказку, когда у меня есть мышь над кругом. Это часть моего кода.JPanel как добавить ToolTipText

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

'class circle1 расширяет апплет' ... что заставило вас думать, что расширение« Applet »было правильным путем? – Robin

ответ

1

Первое заключается в определении, когда мышь находится внутри круга. Для этого вы можете проверить положение курсора мыши на mouseMotionlister в соответствии с площадью круга

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

После того, как вы определить эту ситуацию можно продолжить, чтобы изменить всплывающую подсказку

+0

Хорошо! Спасибо! Я постараюсь сделать это :) – Blackchart

+0

Если вам не нужен точный расчет области, вы можете даже предположить квадратную площадь вместо этого, и ваша реализация может быть еще проще – fGo

+0

Пожалуйста, смотрите здесь и расскажите мне, что не так? http://pastebin.com/3PBM9WP6 – Blackchart

2

Взгляните на JComponent#getToolTipText(MouseEvent)

Это позволит вам определить, какой текст будет возвращаться в зависимости от местоположения мыши.

Это трудно определить для вашего фрагмента кода, именно там, где круг был drawen, но я бы не рисовать прямо на поверхности апплета, но вместо того, чтобы использовать пользовательский компонент (например, в JPanel) вместо (перекрывая его paintComponent метод). Это я либо добавлю к апплету, либо к панели управления.

Таким образом, ваш идти, чтобы избежать проблем с событиями мыши было потреблено

Я бы также посмотреть на Ellipse2D, которые могут быть использованы для определения, если эллипс содержит заданную точку

1

См Playing With Shapes. Вы можете создать JLabel с ShapeIcon. Затем вы просто используете метод setToolTipText() JLabel. Затем вы можете добавить ярлык на панель, как и любой другой компонент.

Теперь, когда вы можете использовать компонент для представления формы, нет необходимости делать обычную роспись. Просто создайте панель, добавьте компоненты в панель. Вы также можете создавать JLabels для всех ваших текстовых строк.

Не делайте обычную роспись, если у вас нет веских оснований для этого.