2 つのフレームがあります (1 つのメインと 1 つのポップアップ)。メイン フレームにキーとマウスのリスナーが追加されます。どちらも問題なく動作します。ポップアップには 50 個のボタンがあります。それらすべてに対して 1 つのアクション リスナーがあります。それは正常に動作します。キーとマウスのリスナーもあります。マウスは動作します。キーが不安定です。メイン フレームで使用されるのと同じ keyListener クラスがポップアップ フレームにも追加されます。ポップアップが表示されるとすぐに、キー リスナーが動作し、マウス クリックが発生すると (アクション リスナーが起動すると)、キー リスナーが動作しなくなります。助けてください。添付のコードは簡易版です
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class key {
private static class toolsAction implements ActionListener {
public void actionPerformed (ActionEvent ae) {
log("Command " + Integer.parseInt(ae.getActionCommand()));
}
}
private static void log(String s) { System.out.println(s); }
private static class keyboardHandler implements KeyListener {
public void keyPressed( KeyEvent e) { log("KB Press called "); }
public void keyReleased(KeyEvent e) { log("KB Release called "); }
public void keyTyped (KeyEvent e) { log("KB Typed called "); }
}
public static void main(String [] args) {
JFrame pFrame = new JFrame("Frame");
pFrame.addKeyListener(new keyboardHandler());
Container pane = pFrame.getContentPane();
pane.setLayout(null);
pane.setVisible(true);
pFrame.setSize(650, 300);
pFrame.setVisible(true);
JButton[] buttons = new JButton[50];
toolsAction action = new toolsAction();
for (int i = 0; i < 50; i++) {
buttons[i] = new JButton("" + i);
buttons[i].setActionCommand("" + i);
buttons[i].addActionListener(action);
pane.add(buttons[i]);
buttons[i].setBounds(((i % 10) * 60), ((i / 10) * 40), 60, 40);
}
}
}