2016-11-19 4 views
0

My Mouse click not working。私は異なったタイプでそれを試しました。 ここにボタンクラスとディスプレイクラスがあります。私のプロジェクトにはエラーはありません。しかしマウスは動かない。ここでは、ボタンクラスにマウスリスナインターフェイスを実装しました。次にボタンクラスオブジェクトを作成し、そのボタンオブジェクトにアトリビュートリスナーを追加しました。JButtonがMy javaコードで動作しない

Buttonクラス:

import java.awt.Font; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

import javax.swing.JButton; 

public class Button extends JButton implements MouseListener{ 

    private boolean click = false; 

    public Button(String text) { 
     super(text); 
     setFont(new Font(null, Font.BOLD, 30)); 
     setText(text); 
    } 

    @Override 
    public void mouseClicked(MouseEvent arg0) { 
     click = true; 
    } 

    @Override 
    public void mouseEntered(MouseEvent arg0) { 

    } 

    @Override 
    public void mouseExited(MouseEvent arg0) { 

    } 

    @Override 
    public void mousePressed(MouseEvent arg0) { 

    } 

    @Override 
    public void mouseReleased(MouseEvent arg0) { 

    } 

    public boolean getClick() { 
     return click; 
    } 

} 

表示クラス:クラスはのMouseListenerを使用することはありませんのMouseListenerインタフェースを実装

import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 

import javax.swing.AbstractAction; 
import javax.swing.JFrame; 

import com.js.CandyThief.CustomButton.Button; 


public class Display{ 

    private String title; 
    private int width; 
    private int height; 

    private JFrame frame; 

    Button btnPlay = new Button("Play"); 
    Button btnHelp = new Button("Help"); 
    Button btnCredits = new Button("Credits"); 
    public Button btnExit = new Button("Exit"); 


    public Display(String title, int width, int height){ 
     super(); 
     this.title = title; 
     this.width = width; 
     this.height = height; 

     createDisplay(); 
    } 
    private void createDisplay(){ 
     frame = new JFrame(title); 
     frame.setSize(width, height); 
     frame.setFocusable(true); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     frame.setResizable(false); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     btnPlay.setBounds(300, 285, 450, 50); 
     btnPlay.setBorderPainted(true); 
     frame.add(btnPlay); 

     btnHelp.setBounds(300, 350, 450, 50); 
     btnHelp.setBorderPainted(true); 
     frame.add(btnHelp); 

     btnCredits.setBounds(300, 415, 450, 50); 
     btnCredits.setBorderPainted(true); 
     frame.add(btnCredits); 

     btnExit.setBounds(300, 480, 450, 50); 
     btnExit.setBorderPainted(true); 
     frame.add(btnExit); 

     Background background = new Background(); 
     frame.add(background); 

     frame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/windowIcon.png"))); 

     btnExit.addActionListener(new AbstractAction() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       if (btnExit.getClick()) { 
        System.exit(0); 
       } 
      } 
     }); 
    } 



} 
+0

なぜあなたはJButtonのを拡張するが、その行動のいずれかを使用していませんか?上書きは理にかなっていません。このコードで何をしようとしているのか説明してください。 –

+0

また、何にも追加しないと、MouseListenerは機能しません。上記のコードでは、どのコンポーネントでも 'addMouseListener(...)'が呼び出されます。 –

+0

私はそこにマウスイベントを追加したいので、Buttonクラスを拡張します。 fututeでは私はカスタムボタンで作業します。 –

答えて

1

。あなたがボタンにするMouseListenerを追加する必要がありますあなたの場合は

http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#addMouseListener(java.awt.event.MouseListener)

public Button(String text) { 
    super(text); 
    setFont(new Font(null, Font.BOLD, 30)); 
    setText(text); 
    addMouseListener(this); 
} 
+0

おかげで。私はこれを追加することを忘れます。今それは働いている。 :))) –

+0

もう1つの事は仲間。 paintComponent(Graphics g)methoodをオーバーライドせずにButton Colorを変更できますか? –

+0

色を変更するには、setBackgroundメソッドまたはsetForegroundメソッドを使用します。 – Marcinek

1
Use JButton Direct if You are Using developing code with Swing no need to create Button Class Its already persent in javax.swing.. 

use 
import javax.swing.*; 

JButton btnPlay = new JButton("Play"); 
JButton btnHelp = new JButton("Help"); 
JButton btnCredits = new JButton("Credits"); 
JButton btnExit = new JButton("Exit"); 

Instead of this code.. 

Button btnPlay = new Button("Play"); 
Button btnHelp = new Button("Help"); 
Button btnCredits = new Button("Credits") 
public Button btnExit = new Button("Exit"); 
+0

後でカスタムボタンを作成します。ですから、私はクラスを拡張する必要があります –

+1

@ MD.NASHIDKAMA * "私はカスタムボタンを後で作っていきます" *後で継承を追加する必要があります。まずそれを動かしてから派生させてください。ところで:**なぜあなたはカスタムボタンを作成する予定ですか?それは新しい*動作*またはちょうど新しいレイアウトを持っていますか? –

+0

私のコードは今すぐうまく動作します。私はそのクラスにaddMouseListenerを追加することを忘れてしまいます。それが主な問題でした。あなたの考えに感謝します。 –

関連する問題