Hallo zusammen,
im Programm werden mittels Draw2d Figures gezeichnet. Die sollen später angeklickt werden können. Im Moment implementiere ich ein Mouseouvereffekt. Beim Mouseover über die Figure soll ein Focusrahmen um die Figure gezeichnet werden. Das funktioniert alles einwandfrei. Das ganze hat nur einen Schönheitsfehler: Wenn der Rahmen gezeichnet wird, wird das im Figure gezeichnete Rechteck um jeweils 1 Pixel nach unten und nach rechts verschoben. Was kann ich dagegen tun?
Gruß
Sven-ber
im Programm werden mittels Draw2d Figures gezeichnet. Die sollen später angeklickt werden können. Im Moment implementiere ich ein Mouseouvereffekt. Beim Mouseover über die Figure soll ein Focusrahmen um die Figure gezeichnet werden. Das funktioniert alles einwandfrei. Das ganze hat nur einen Schönheitsfehler: Wenn der Rahmen gezeichnet wird, wird das im Figure gezeichnete Rechteck um jeweils 1 Pixel nach unten und nach rechts verschoben. Was kann ich dagegen tun?
Java:
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FocusBorder;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.draw2d.MouseEvent;
import org.eclipse.draw2d.MouseMotionListener;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.XYLayout;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import com.swtdesigner.SWTResourceManager;
public class ZZZ {
public static void main(String args[]) {
Shell shell = new Shell();
final FocusBorder fb = new FocusBorder();
LightweightSystem lws = new LightweightSystem(shell);
Figure parent = new Figure();
parent.setLayoutManager(new XYLayout());
lws.setContents(parent);
final Figure figure = new Figure();
figure.setLayoutManager(new XYLayout());
figure.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseHover(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
figure.setBorder(null);
}
@Override
public void mouseEntered(MouseEvent arg0) {
figure.setBorder(fb);
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
RectangleFigure rectangle = new RectangleFigure();
rectangle.setBackgroundColor(SWTResourceManager.getColor(192, 228, 243));
figure.add(rectangle, new Rectangle(5, 5, 90, 90));
parent.add(figure, new Rectangle(50, 50, 100, 100));
shell.setSize(300, 300);
shell.open();
shell.setText("Example");
Display display = Display.getDefault();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
Gruß
Sven-ber