Avatar billede jannek_ek Nybegynder
31. december 2004 - 15:10 Der er 5 kommentarer og
1 løsning

mouselistener på grafik

hvordan smider man en mouselistener på en fillrect() ?
Avatar billede soreno Praktikant
31. december 2004 - 15:22 #1
En mulig løsning er:

Smid en mouselistener på den container som du har lavet
firkanten på, og sorter manuelt på kordinaterne til firkanten.
Avatar billede jannek_ek Nybegynder
31. december 2004 - 15:25 #2
ehh jeg er ikke så godt inde i java, så kan du uddybe det lidt mere??

import java.lang.*;
import java.awt.*;

public class Window extends Frame
{
    }
    Insets in = getInsets();
    g.translate(in.left, in.top);
    g.setColor(new Color(255, 255, 255, 150));
    g.fillRect(20, 19, 260, 162);
  }
}
Avatar billede soreno Praktikant
31. december 2004 - 15:27 #3
Jeg vil lade forfatteren af javabog.dk uddybe:
http://javabog.dk/OOP3/kapitel13.jsp

Ideen er så at undersøge om musens kordinat (x,y)
ligger indenfor firkanten. Det kan klares med en
simpel if-sætning
Avatar billede soreno Praktikant
31. december 2004 - 15:51 #4
Et meget simpelt kørende eksempel:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class SwingMouseListener extends JFrame implements MouseListener
{
    private int frameWidth = 640;
    private int frameHeight = 480;
    private int startX = 40;
    private int startY = 50;
    private int sizeX = 200;
    private int sizeY = 150;
    private Color rectColor = new Color(128, 0, 128, 150);

    public SwingMouseListener()
    {
    createFrame();
    }

    private void createFrame()
    {
    setTitle("TestKlasseSwing");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JFrame.setDefaultLookAndFeelDecorated(true);

    addMouseListener(this);

    //Center Frame
    setSize(frameWidth, frameHeight);
    setLocationRelativeTo(this);
    }

    public void paint(Graphics g)
    {
    g.setColor(rectColor);
    g.fillRect(startX, startY, sizeX, sizeY);
    }

    public void mouseClicked(MouseEvent e)
    {
    if(e.getX() > startX && e.getX() < startX + sizeX &&
      e.getY() > startY && e.getY() < startY + sizeY)
        System.out.println("Du er dygtig - du ramte firkanten i ("+
                  e.getX() + ", " + e.getY() + ") !");
    }

    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}

    public static void main(String[] args)
    {
    new SwingMouseListener().show();
    }
}
Avatar billede jannek_ek Nybegynder
31. december 2004 - 16:05 #5
ok mange tak. bare kom med et svar
Avatar billede soreno Praktikant
31. december 2004 - 16:19 #6
Ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester