import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class displayFullScreen extends JFrame {
private JLabel alarmMessage = new JLabel("Alarm !");
private JPanel panel = new JPanel();
public displayFullScreen() {
setUndecorated(true);
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
alarmMessage.setText("Alarm !");
alarmMessage.setFont(new Font("Cambria",Font.BOLD,100));
alarmMessage.setForeground(Color.CYAN);
panel.add(alarmMessage);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width,screenSize.height);
panel.setBackground(Color.black);
add(panel);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent ke) { // handler
if(ke.getKeyCode() == ke.VK_ESCAPE) {
System.out.println("escaped ?");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // trying to close
} else {
System.out.println("not escaped");
}
}
});
}
public static void main(String args[]) {
new displayFullScreen().setVisible(true);
}
}
I have set a listener for the keys .When ever i press ESC
key why doesn't the frame close ?
You are not closing your your frame at esc key. You are just setting its default close operation so you must write
or
instead of
If you don't want to exit the application then use
setVisible(false)
.Tip:
VK_ESCAPE
is static filed ofKeyEvent
class so instead ofke.VK_ESCAPE
you can writeKeyEvent.VK_ESCAPE
.The invocation of
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
does not close the frame, it will define the behaviour when the windows decoration [X] close button is pressed (Which you have disabled for full screen). You could replace this withsetVisible(false);
or exit your programm.Use
dispose()
method.