2010-01-05 2 views
0

Nous avons une application de swing qui affiche beaucoup de rectangles. Nous utilisons la classe Rectangle2D.double pour dessiner les rectangles sur un JPanel. Ma condition est la suivante. En cliquant sur le rectangle, je dois choisir une image du système de fichiers local et l'afficher dans une fenêtre contextuelle ou un cadre. Ma question est comment puis-je fournir un lien hypertexte ou un bouton à l'intérieur de ce rectangle Rectangle2D.double. S'il vous plaît faites le moi savoir.Bouton à l'intérieur de l'oscillation Rectangle2D.double

Merci -Jad.

Répondre

1

J'espère que c'est ce que vous entendez:

import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.*; 
import javax.swing.*; 

public class RectButton extends JPanel { 

    Rectangle2D.Double rect; 

    public RectButton() { 
     this.addMouseListener(new MouseAdapter() { 
      public void mouseClicked(MouseEvent e) { 
       Point point = e.getPoint(); 
       System.out.println(checkRectArea(point)); 
       // Do whatever else you want here. 
      } 
     }); 
    } 

    public boolean checkRectArea(Point point) { 
     return rect.contains(point); 
    } 

    public void paint(Graphics g) { 
     Graphics2D g2 = (Graphics2D) g; 
     rect = new Rectangle2D.Double(10, 10, 50, 50); 
     g2.draw(rect); 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     RectButton r = new RectButton(); 
     frame.add(r); 
     frame.setSize(new Dimension(300, 300)); 
     frame.setVisible(true); 
    } 

} 

Ce programme dessine un rectangle et imprimer vrai si vous avez cliqué sur l'intérieur du rectangle, sinon false.

0

Vous voulez mettre un MouseListener sur le panneau, qui attrapera tous les clics n'importe où sur le panneau. Vous pouvez ensuite obtenir l'emplacement du clic sur l'événement et déterminer dans quel rectangle le clic s'est produit, puis appeler le code approprié pour cet événement et cet emplacement.