アプリ版:「スタンプのみでお礼する」機能のリリースについて

自分の作ったJFrameのアプリケーションで、処理をお願いするのに、いちいちOKボタンをクリックしていたんでは、大変面倒で困ってます。

普通のウインドウズのアプリケーションみたいに、OKボタンを一々クリックしなくても、エンターキーを押せば処理してくれるようにしたいのですが、Javaではできないのですか?

たしか、VBではできましたよね。

あと、欲をいうと、エスケープキーを押すと終了するようにもしたいです。

誰か知っている人がいたら、教えてください。よろしくお願いします。

A 回答 (1件)

ベストな解答では無いかもしれませんけど。

。。

ボタン「OK」に KeyListener を組み込めば可能かと。
それで、「OK」ボタンの actionPerformed() と同様の処理をkeyTyped() なり、keyReleased(),keyPressed() なりをオーバライドして書き込むか、actionPerformed() を呼び出せば良いかと。

Button button = new Button("OK");
button.addActionListener(this);
button.addKeyListener(this);

*******************************
方法1

public void actionPerformed(ActionEvent e) {
//何らかの処理
}

public void keyReleased(KeyEvent e) {
if(KeyEvent.VK_ENTER == e.getKeyCode()) {
//actionPerformed() と同様の処理
}
}

************************************
方法2

public void actionPerformed(ActionEvent e) {
// 何らかの処理
}

public void keyReleased(KeyEvent e) {
if(KeyEvent.VK_ENTER == e.getKeyCode()) {
ActionEvent ae = new ActionEvent(e.getComponent(),ActionEvent.ACTION_PERFORMED, "" ) ;
actionPerformed(ae) ;
}
}

*************************************
方法3

public void actionPerformed(ActionEvent e) {
hoo();
}

public void keyReleased(KeyEvent e) {
if(KeyEvent.VK_ENTER == e.getKeyCode()) {
hoo();
}
}

public void hoo() {
//何らかの処理
}

*********************************

エスケープキーで終了したいのでしたら。。。

public class Foo extends JFrame implements KeyListener {
public Foo() {
addKeyListener(this);
}
public void keyReleased(KeyEvent e) {
if(KeyEvent.VK_ESCAPE == e.getKeyCode()) {
System.exit(0);
}
}

で、良いかと。。。
    • good
    • 0
この回答へのお礼

どうも、ご回答ありがとうございます。

VBだと、確かデフォルトキーとか、キャンセルキーとか言って登録できたんですけど。

やはり、KeyListenerしか手はないですかね。私もやろうと思ったんですが、getKeyCode()で、エンターキーのキーコードは何番だ?と思っていて、先に進まなかったのです。VK_ENTERはこういうときに使うんですね。目には付いたのですが、使い方が分からなくて、結局出来ませんでした。

しかし、これで問題が解決できそうです。一々クリックするのが嫌いなものですから。どうもありがとうございました。

お礼日時:2002/09/07 19:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!