Jframe在打开时崩溃

时间:2016-01-21 22:07:18

标签: java swing jframe awt

我试图启动jframe但这个Frame根本不打开。它在我运行程序时崩溃了。我使用鼠标列表器和鼠标运动监听器接口。请建议任何修复.............................

 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();

    }

}

2 个答案:

答案 0 :(得分:2)

它没有崩溃。你只是忘了调用launchFrame(thanx到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();

    }

}

答案 1 :(得分:1)

您没有使用launchFrame方法调用main方法,我建议您更改main方法,使其看起来更像......

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();
        }
    });
}