2016-04-13 10 views
1

Javaでやるのは手間がかかります。ラムダ式として渡されたコードでmouseclickに反応する必要があります(コンソールで 'ok'を印刷してください) 問題は、メインクラスを変更できないため、ラムダ式を受け取るクラス/インターフェイスを準備する必要があることです。 ラムダ式のチュートリアルに従おうとしましたが、非機能インターフェイスの使用に関するエラーが続いています。 メイン:javaの機能インタフェースがマウスで反応する

import javax.swing.*; 

public class Main { 

    public static void main(String[] args) { 
    SwingUtilities.invokeLater(()-> { 
     JFrame f = new JFrame(); 
     JButton b = new JButton("Mouse Click"); 
     b.addMouseListener ((MousePressListener) e -> System.out.println("ok")); 
     f.add(b); 
     f.pack(); 
     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     f.setVisible(true); 
     } 
    ); 
    } 
} 

は、より多くの経験を持つあなたたちは、私がこの問題に取り組んで開始することができますどのようにいくつかのアドバイスで私を助けることができるだろうか? デフォルトでインターフェイスを使用する代わりに、クラスの

public class MousePressListener implements MouseListener { 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

} 

答えて

3

(Iこのクラスおよび使用する「道具」はそう今MousePressListenerものMouseListenerが右入力される入力したのか?)私はクラスの作成を始めたが、その後、私は失われてしまいましたmouseClicked以外のすべてのための方法:

@FunctionalInterface 
public interface MousePressListener extends MouseListener 
{ 
    @Override 
    default public void mouseEntered(final MouseEvent e) { 
    } 

    @Override 
    default public void mouseExited(final MouseEvent e) { 
    } 

    @Override 
    default public void mousePressed(final MouseEvent e) { 
    } 

    @Override 
    default public void mouseReleased(final MouseEvent e) { 
    } 
} 

の機能インターフェースのために必要とされるだから今MousePressListenerはただ一つの非デフォルトのメソッドとのインタフェースです。これはあなたのMainクラスを全く変更することなく使用することができます。

+0

私が必要としていたのは、 – jawjaw

関連する問題