我试图启动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();
}
}
答案 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();
}
});
}