Reputation: 33
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
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
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