0

エラーメッセージが表示されます:

タイプ JOptionPane のメソッド showInternalConfirmDialog(Component, Object, String, int, int) は、引数 (new KeyListener(){}, String, String, int, int) には適用されません。

        public void keyTyped(KeyEvent e) {

        }

        public void keyReleased(KeyEvent e) {
            System.out.println("Key Released F1");
            if(e.getKeyCode()==KeyEvent.VK_F1) {



    /*here i get the error*/    int choice = JOptionPane.showInternalConfirmDialog(this, "Would you like to play the movie? " 
                        ,"Message", JOptionPane.WARNING_MESSAGE
                        , JOptionPane.OK_CANCEL_OPTION);

このエラーが発生する理由は何ですか?

4

1 に答える 1

0

JFrame を拡張すると仮定すると、JFrame は JComponent を拡張しません。これがうまくいかない原因だと思います。回避策として、JPanel を使用することをお勧めします。このコードはコンパイルされ、機能しました。

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class CodeTester extends JFrame implements KeyListener
{
    JPanel panel = new JPanel();

    public static void main(String[] args)
    {
        JFrame frame = new CodeTester();
        frame.setSize(400, 400);
        frame.setVisible(true);    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public CodeTester()
    {
        addKeyListener(this);
        getContentPane().add(panel);        
    }

    public void keyTyped(KeyEvent e) {}
    public void keyPressed(KeyEvent e) {}

    public void keyReleased(KeyEvent e) 
    {
        int choice = JOptionPane.showInternalConfirmDialog(panel, 
                    "Would you like to play the movie? " 
                       ,"Message", JOptionPane.WARNING_MESSAGE
                    , JOptionPane.OK_CANCEL_OPTION);                

    }
}

お役に立てれば。

編集「F1」ボタン条件を実装せずにコーディングしたことに気づきました。単純化するために削除しました。

于 2012-12-18T16:18:40.400 に答える