2
我有一些簡單的代碼,我試圖將鍵盤事件放入Java小程序中。使用appletviewer運行時,代碼運行得很好,但是當我從瀏覽器加載它時(同時嘗試使用Chrome和Firefox),JApplet不會將焦點放在點擊上。從瀏覽器運行JApplet無法獲得焦點
嘗試與Applet完全相同的代碼而不是JApplet可以正常工作。
這裏是我的代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JApplet {
String s = "";
public void init() {
setFocusable(true);
setEnabled(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
s = "KEY PRESSED: " + e.getKeyCode();
repaint();
}
});
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
boolean ret = requestFocusInWindow();
s = "requestFocusInWindow: " + ret;
repaint();
}
});
requestFocusInWindow();
}
public void start() {
requestFocusInWindow();
}
public void paint(Graphics g) {
super.paint(g);
requestFocusInWindow();
g.setColor(Color.BLACK);
s = "Focus owner: " + isFocusOwner() + ", " + s;
g.drawString(s, 24, 24);
}
}
大衛,感謝您的建議,但你的例子顯示了相同的行爲,我的。從瀏覽器運行時,除非您單擊JTextField,否則applet不會獲得焦點。當從appletviewer運行時,它將獲得焦點而無需點擊文本字段。我嘗試使用KeyBinding API而不是KeyEventListener,但問題是焦點,requestFocusInWindow()總是返回false。 –
@lonutnicu所以當你在你的瀏覽器中打開applet並按下* a *什麼都沒有發生?......如果你想讓jtextfield專注於調用requestFocusInWindow文本域 –
不,我想讓applet專注,而不是文本字段。我甚至不想擁有一個文本字段。事實上,當我從瀏覽器打開並按'a'時,什麼也沒有發生。如果我使用applet查看器運行它,然後按'a',它將起作用。就像我的例子。 –