2016-01-21 135 views
0

我试图启动jframe,但是这个Frame根本不打开。它在我运行程序时崩溃。我正在使用鼠标列表和鼠标移动监听器接口。请提出任何修正.............................Jframe在打开时崩溃

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

    } 

}

+0

崩溃如何?它会产生任何输出吗?你打电话过得怎么样? – MadProgrammer

回答

2

它不会崩溃。您只需忘了打电话launchFrame(感谢名单以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

OP在'launchFrame'中做了哪些工作? – MadProgrammer

+0

啊耶。但他从来没有打过电话^^ – JayC667

+1

啊,是的,但你怎么知道?他们没有提供任何关于他们如何使用班级的上下文 – MadProgrammer

1

你不能从你的main方法调用launchFrame方法,我建议你改变你的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(); 
     } 
    }); 
}