Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » MouseListener auf Graphics

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.07.2006, 03:39 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Hi,

Ich hab in meiner Anwendung haufenweise Graphics.drawString(String,int,int) und benötige jetzt einen MouseListener dafür,weil etwas neues irgendwohin gezeichnet werden soll, wenn die Maus über eines dieser Strings fährt.Allerdings weiß ich grad mal gar nicht,wie ich dasmachen soll,ich kann ja schlecht Graphics mit einem MausListener belegen ...
Jemand ne Idee ?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.07.2006, 08:38 Uhr
(un)wissender
Niveauwart


Dein Graphics-Object zeichnet ja in irgendeine Komponente. Dort setzt du den Mouselistener ein.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.07.2006, 09:14 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Da sind so um die 2000 gezeichnete Objekte drin, woher weiß ich,welche dieser er dann überfährt ... ?!
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.07.2006, 09:35 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Obwohl,ich kann mit dem MouseListener die Position des Zeiger auf dem JPanel bestimmen und dann über die Koordinaten schauen,was ich da vorher hingezeichnet hab ...
Ist zwar etwas umständlich aber mir fällt gerade nichts besseres ein
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.07.2006, 15:14 Uhr
(un)wissender
Niveauwart


Das Leben ist hart.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.07.2006, 15:19 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Und Java ist umständlich
Nein,mal im ernst, kann man nicht irgendwie ne Klasse schreiben, der Text irgendwo in einem Panel einsetzt mit einem bestimmten Font ? Und diese Objekte dann mit einem MouseListener belegen. Weil so wirklich schön ist meine Lösung da nicht gerade ...
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.07.2006, 15:37 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Klar, einfach eine eigene JComponent schreiben ... Zu wenig schlaf
Nur geht g.drawString() nicht in paintComponent ...

C++:
class JFontWriter extends JComponent
{
    private String text = null;
    private int x = 0;
    private int y = 0;

    JFontWriter(String text, int x, int y)
    {
        this.text = text;
        this.x = x;
        this.y = y;
    }

    @Override
    public void paintComponent(Graphics g)
    {
        g.drawString(text, x, y);
    }
}

--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.08.2006, 18:09 Uhr
puppetMaster



wie währe es wenn du ein JPanel benutzt und ihm einfach für jeden text ein JLabel hinzufügst...
JLabel ist auch eine componente der man einen MouseListener hinzufügen kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.08.2006, 00:00 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Ich brauch aber einige Möglichkeiten mit dem Text zu arbeiten, die ich mit JLabel leider nicht habe ...
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
30.08.2006, 13:15 Uhr
puppetMaster



welche möglichkeiten meinst du?
mir fällt spontan nichts ein was man mit dem JLabel nicht machen könnte....

ohne wirds schon umständlicher.

zuersteinmal musst du die länge und höhe des strings berechnen, ich glaube die klasse
FontMetrics stellt dafür die passenden methoden bereit.
dann speicherst du für jeden text die x,y position und breite und höhe in einm Rectangle.
die rectangles hebst du am besten in einer liste auf.

die klasse rectangle verfügt auch über eine intersects methode,
mit der du dann dann überprüfen kannst ob sich der mauszeiger mit dem Rectangle der einzelnen strings überschneidet.

Dieser Post wurde am 30.08.2006 um 13:16 Uhr von puppetMaster editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: