Trong chế độ hiển thị thụ động, người dùng có thể sử dụng các giao diện KeyListener
và ActionListener
để xử lý sự kiện từ người dùng.Làm thế nào để xử lý các sự kiện từ bàn phím và chuột trong chế độ độc quyền toàn màn hình trong java?
Cách xử lý sự kiện chính xác ở chế độ toàn màn hình là gì? Hãy mở rộng bộ xương này cung cấp thực hiện cho các nhấp chuột và các sự kiện nhấn phím, xin đừng sưng lên ví dụ của bạn (ví dụ bắt đầu toàn màn hình chế độ độc quyền, sử dụng một Timer
để cập nhật đồ họa trong cửa sổ):
import java.applet.Applet;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import javax.swing.Timer;
public class applet extends Applet
{
Timer timer;
JFrame frame;
DisplayMode[] displayModes = new DisplayMode[] {
new DisplayMode(1280, 800, 32, 60)
};
BufferStrategy bufferStrategy;
Rectangle bounds;
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
public void init()
{
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); //displays, fonts, color shemes...
GraphicsDevice device = env.getDefaultScreenDevice(); //for one-display systems
setIgnoreRepaint(true);
GraphicsConfiguration gc = device.getDefaultConfiguration();
frame = new JFrame(gc);
device.setFullScreenWindow(frame);
if (device.isDisplayChangeSupported())
device.setDisplayMode(displayModes[0]);
frame.createBufferStrategy(2);
bufferStrategy = frame.getBufferStrategy();
timer = new Timer(1000/50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Graphics2D g = null;
try {
g = (Graphics2D) bufferStrategy.getDrawGraphics();
render(g);
} finally {
g.dispose();
}
bufferStrategy.show();
}
});
}
private void render(Graphics2D g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, bounds.width, bounds.height);
}
public void start()
{
timer.start();
}
public void stop()
{
timer.stop();
}
}
Cảm ơn bạn đã trả lời! Bạn có thể vui lòng cung cấp cùng một ví dụ, nhưng như applet java? Tôi muốn ví dụ là một applet java, nhưng có vẻ như tôi đã quên đưa nó vào bài đăng đầu tiên ... Tôi nghĩ bạn chỉ cần thực hiện những bổ sung nhỏ/thay đổi đối với mã thực tế bạn cung cấp, sẽ rất cảm ơn nếu bạn làm điều đó , bởi vì ví dụ của bạn rất tốt để nghiên cứu! – Vadim
Tôi muốn đề xuất 'JApplet', nhưng nó có thể phải được [ký] (http://download.oracle.com/javase/tutorial/deployment/applet/security.html) để bảo mật. Bạn có thể dùng thử bằng cách sử dụng phương pháp kết hợp được hiển thị [ở đây] (https://sites.google.com/site/drjohnbmatthews/subway); [tag: java-web-start] sẽ là một chiến lược triển khai tốt hơn. – trashgod
Cảm ơn bạn, sẽ kiểm tra nó! – Vadim