Tooltips in Eclipse

Status
Nicht offen für weitere Antworten.

darksmilie

Bekanntes Mitglied
Hi,

Ich würde gerne ein Tooltip wie in Eclipse erstellen. Weiß jemand von euch wonach ich im Eclipse-code suchen müsste um die codestellen zu finden oder kennt vielleicht jemand die genaue Klasse?
 
Für ein Swing Projekt würde dir der Code wenig nutzen, da Eclipse auf SWT und JFace aufbaut.
Aber wo ist jetzt das große Problem auf F2 zu reagieren? ???:L
Der Swing Tooltip ist aber vermutlich nicht ganz das richtige. Du solltest eventuell eher auf ein Popup zurückgreifen, da du darüber mehr Kontrolle hast.
 
Ich glaube ich habe die richtige Klasse im Eclipse source gefunden. Bin mir zwar noch nicht 100%ig sicher aber ich glaube das ist die richtige.

JavaEditorTextHoverProxy.java

@wildcard richtig mit swing mache ich nix. Das tooltip soll halt so aussehen wie das von Eclipse und sich auch so verhalten.
 
darksmilie hat gesagt.:
Nein ich suche die erweiterten Tooltips, wo mehr Informationen angezeigt werden, wenn man "F2" gedrückt hat.

also auf der Sun-Site hatte ich damals gefunden, wie man die Tooltip-Klasse überschreibt, wenn das natürlich zuviel arbeit ist, zu suchen ....

Naja ich hab damals nur den Text und die Farbe der Tooltips verändert, das hier habe ich jetzt mal versucht nachzubauen. Einige werden das sicher sehr unschön finden 😀
Naja muss sich ja keiner anschauen 😉

Das ganze ist nicht ganz fertig, mit nem MouseMotionlistener kann man das ganze wieder zurücksetzen bzw. das "vergrössern" schöner machen...
Naja warn Versuch 😀

Code:
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Robot;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JToolTip;
import javax.swing.ToolTipManager;

public class OwnToolTip 
{

	public static void main(String[] args)
	{
		
		final JFrame frame = new JFrame("MyOwnToolTip");
		frame.setLocation(200, 200);
		//frame.setSize(250, 100);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		
		final JLabel lab = new JLabel("Label mit Tooltip, drück F2 bei geöffnetem Tooltip", JLabel.CENTER)
		{

			private static final long serialVersionUID = 1L;
			JToolTip tip = new JToolTip();

		      public JToolTip createToolTip()
		      {
		         tip.setComponent(this);
		         return tip;
		      }
		};
		   
		final ToolTipManager m = ToolTipManager.sharedInstance();
		m.registerComponent(lab);
		m.setReshowDelay(0);
		   
		final JToolTip tt = lab.createToolTip();
		tt.setBackground(Color.yellow);
		tt.setForeground(Color.black);
	   
		lab.setToolTipText("Standard-Tooltip");
	   
		frame.addKeyListener(new KeyListener(){

		@Override
		public void keyPressed(KeyEvent e) 
		{
			if(e.getKeyCode() == KeyEvent.VK_F2)
			{
				tt.setPreferredSize(new Dimension(500,200));
				Robot rob;
				try {
					
					rob = new Robot();
					rob.mouseMove(lab.getLocationOnScreen().x-1,lab.getLocationOnScreen().y-1);
					rob.mouseMove(lab.getLocationOnScreen().x+lab.getWidth()/2,
							lab.getLocationOnScreen().y+lab.getHeight()/2);
					lab.setToolTipText("Tooltip nach F2");
					
				} catch (AWTException e1) {
					e1.printStackTrace();
				}
			}
		}

		@Override
		public void keyReleased(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void keyTyped(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}
		   
	   });
   
	   frame.add(lab);
	   frame.pack();
	   frame.setVisible(true);
	}
}
 
abgesehen davon, das dein Vorschlag Swing ist wäre es ja ok, aber ich habe eine SWT Anwendung und möchte kein SWT mit Swing mixen. Das Thema hatte ich früher einmal und hat nur Probleme gemacht. Aber danke für dein Vorschlag. 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben