John doe
John doe

Reputation: 33

Jframe crashing upon opening

I'm trying to launch the jframe but this Frame doesn't open at all. It crashes when i run the program. I'm using a mouselistner and mouse motion listener interfaces.Please suggest any fixes.............................

 public class TwoListener implements MouseMotionListener, MouseListener{

    private JFrame f;
    private TextField tf;

    public TwoListener(){
        f = new JFrame("Two Listeners Example");
        tf = new TextField(30);


    }

    public void launchFrame(){
        Label label= new Label("Click and Drag the mouse");

        // add components to the frame
        f.add(label,BorderLayout.NORTH);
        f.add(tf,BorderLayout.SOUTH);

        //add this object to a listener

        f.addMouseMotionListener(this);
        f.addMouseListener(this);

        //set size of the frame

        f.setSize(300,200);
        f.setVisible(true);
    }


    @Override
    public void mouseEntered(MouseEvent e) {
        String s = "Mouse moved";
        tf.setText(s);          
    }



    @Override
    public void mouseDragged(MouseEvent e) {

            String s = "Mouse Dragging: X " +e.getX() + " Y: " +e.getY();
            tf.setText(s);
    }



    @Override
    public void mouseExited(MouseEvent e) {
        String s = "mouse has exited the building";
        tf.setText(s);
    }



    //unimplemented methods
    public void mouseClicked(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseMoved(MouseEvent e) {}


    public static void main(String[] args){
        new TwoListener();

    }

}

Upvotes: 0

Views: 149

Answers (2)

MadProgrammer
MadProgrammer

Reputation: 347332

You're not calling the launchFrame method from your main method, I'd recommend changing your main method to look something more like...

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                ex.printStackTrace();
            }

            new TwoListener().launchFrame();
        }
    });
}

Upvotes: 1

JayC667
JayC667

Reputation: 2588

It does not crash. You simply forgot to call launchFrame (thanx to MadProgrammer)

public class TwoListener implements MouseMotionListener, MouseListener {

    private final JFrame    f;
    private final TextField tf;

    public TwoListener() {
        f = new JFrame("Two Listeners Example");
        tf = new TextField(30);

        launchFrame();
    }

    public void launchFrame() {
        final Label label = new Label("Click and Drag the mouse");

        // add components to the frame
        f.add(label, BorderLayout.NORTH);
        f.add(tf, BorderLayout.SOUTH);

        //add this object to a listener

        f.addMouseMotionListener(this);
        f.addMouseListener(this);

        //set size of the frame

        f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // SOMEWHAT IMPORTANT
        f.setSize(300, 200);
        f.setVisible(true);
    }


    @Override public void mouseEntered(final MouseEvent e) {
        final String s = "Mouse moved";
        tf.setText(s);
    }

    @Override public void mouseDragged(final MouseEvent e) {

        final String s = "Mouse Dragging: X " + e.getX() + " Y: " + e.getY();
        tf.setText(s);
    }

    @Override public void mouseExited(final MouseEvent e) {
        final String s = "mouse has exited the building";
        tf.setText(s);
    }

    //unimplemented methods
    @Override public void mouseClicked(final MouseEvent e) {}
    @Override public void mousePressed(final MouseEvent e) {}
    @Override public void mouseReleased(final MouseEvent e) {}
    @Override public void mouseMoved(final MouseEvent e) {}

    public static void main(final String[] args) {
        new TwoListener();

    }

}

Upvotes: 2

Related Questions