2011-04-24 4 views
1

J'ai une toile et à l'intérieur de la toile j'ai une webcam. En plus de l'image vidéo, je veux placer un «bouton» et attacher un événement, de sorte que j'ai le contrôle pour l'écran plein et le réduis au minimum. Mais cette méthode donne une erreur, comment le réparer?Comment ajouter un bouton dans un canevas?

public static void main(String[] args) 
    { 

     JFrame frame = new JFrame("Overlay"); 
     frame.setBackground(Color.RED); 

     // Canvas, to have a video and on top a button  
     final Canvas canvas = new Canvas(); 
     Button button = new Button(canvas); // ERROR 
     button.setBounds(10,10, 100, 40); 
     canvas.setPreferredSize(new Dimension(200, 200));  

     // Layout 
     JPanel content = new JPanel(new GridLayout(2,2)); 
     content.add(canvas); 
     content.add(new JButton("test")); // for empty cell 

     // Show 
     frame.add(content);       
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 

     // Third party tools to capture the webcam, and plugin to our canvas 
     final Video video = player.getElementByName("gl"); 
     XOverlay.wrap(video).setWindowID(canvas); 
    } 
+1

Le message d'erreur est tout à fait explicite. Ce constructeur n'existe pas. Vous devez d'abord créer le bouton puis l'ajouter à un conteneur (btw canvas n'est pas un conteneur). Et vous mélangez les composants swing et awt. Faites très attention à ce que vous faites. – Howard

Répondre

1

Il donne l'erreur car il n'y a pas de constructeur dans Button classe qui prend canvas comme argument.You pouvez ajouter votre touche à même JPanel où vous ajoutez votre toile.

+1

L'ajout de jPanel sépare le bouton de Overlay. Donc la vidéo est séparée et le bouton est séparé. J'ai une vidéo en plein écran en cours d'exécution, et j'ai besoin d'un bouton dans le coin supérieur droit. – YumYumYum

1
canvas.add(button); 

ou

canvas.add(button, 55, 30); 
Questions connexes