0

私は MouseMotionListener を実装し、 MouseListenerも実装しています。コンストラクターに追加しnewContentPane.addMouseListener(this)

newContentPane.addMouseMotionListener(this);

それは十分ではありません?のようなメソッドmouseDragged(MouseEvent e), mouseMoved(MouseEvent e)は呼び出されません。

import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;

public class BorderFrame extends JFrame implements MouseListener,MouseMotionListener{
    private static final long serialVersionUID = 1L;
    private JButton northButton;
    private JButton southButton;
    private JButton westButton;
    private JButton eastButton;
    private JButton centerButton1;
    private JButton centerButton2;
    private JPanel newContentPane;
    private JSplitPane splitPane1;
    private JSplitPane splitPane2;

    public BorderFrame(String title) {
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        newContentPane = new JPanel(new BorderLayout());
        northButton = new JButton("North");
        southButton = new JButton("South");
        westButton = new JButton("West");
        eastButton = new JButton("East");
        centerButton1 = new JButton("Center1");
        centerButton2 = new JButton("Center2");
        newContentPane.add(northButton, "North");
        newContentPane.add(southButton, BorderLayout.SOUTH);
        newContentPane.add(westButton, BorderLayout.WEST);
        newContentPane.add(eastButton, BorderLayout.EAST);
        // newContentPane.add(centerButton, BorderLayout.CENTER);
        splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centerButton1,
                centerButton2);
        splitPane1.setResizeWeight(0.5);
        splitPane1.setOneTouchExpandable(true);
        splitPane1.setContinuousLayout(true);
        newContentPane.add(splitPane1, BorderLayout.CENTER);

        add(newContentPane);
        newContentPane.addMouseListener(this);
        newContentPane.addMouseMotionListener(this);
    }

    protected static void createAndShowGUI() {
        final BorderFrame borderFrame = new BorderFrame("Test BorderLayout");
        borderFrame.pack();
        borderFrame.setLocationRelativeTo(null);
        borderFrame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }


//AUTOGENERATED methods
....
}
4

3 に答える 3

0

MouseMotionListener および MouseListener インターフェイスのメソッドを実装する必要があります。これらの両方のインターフェースから、オーバーライドする必要がある合計 7 つのメソッドがあります。処理するイベントのメソッドにコードを記述します。ただし、これらすべてのメソッドをオーバーライドする必要があります。

public void mouseMoved(MouseEvent e) {
   //Code what you want to do
}

public void mouseDragged(MouseEvent e) {
   //Code what you want to do
}

 public void mousePressed(MouseEvent e) {
   //Code what you want to do
}

public void mouseReleased(MouseEvent e) {
   //Code what you want to do
}

public void mouseEntered(MouseEvent e) {
   //Code what you want to do
}

public void mouseExited(MouseEvent e) {
   //Code what you want to do
}

public void mouseClicked(MouseEvent e) {
   //Code what you want to do
}
于 2013-09-18T07:53:52.750 に答える
0

フレームに newContentPane (他のコンポーネントを含む) のみが含まれている場合は、リスナーをフレームに追加してみてください。

...
add(newContentPane);
addMouseListener(this);
addMouseMotionListener(this);
}
...
于 2013-09-18T08:16:23.867 に答える