6

Virtual KeyBoard のサンプル クラスを実装し、この VirtualKeyboardTest を実行しました。キーボードは表示されますが、主な問題は、x ボタンをクリックしたときに適切に閉じないことです。これを修正するにはどうすればよいですか?

import java.awt.*;
import java.awt.event.*;

public class VirtualKeyboardTest
{
    public static void main(String args[])
    {
        VirtualKeyboard vk = new VirtualKeyboard();
        vk.setSize(500,300);
        vk.setVisible(true);
        Frame f1 = new Frame();
        f1.addWindowListener( new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent we) {

                System.exit(0);
            }
        } );
    }
}
4

3 に答える 3

5

コードが正しくありません。それ以外の

f1.addWindowListener( new WindowAdapter() {
  ...

試す

vk.addWindowListener( new WindowAdapter() {
  ...

これにより、ウィンドウが閉じます。

于 2012-10-05T11:13:50.737 に答える
3

メソッドpublic void dispose()を使用することをお勧めします

vk.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent we) {
            vk.dispose(); // use dispose method 
         }
     }
);

AWTは重量級です。つまり、そのコンポーネントはsystem のリソースを使用します。

Windows はノンブロッキングです。つまり、コードで作成すると、コードは引き続き実行されます。

これは、別の場所への参照を明示的に保存しない限り、作成直後に Window がおそらくスコープ外になることを意味します。この時点では、ウィンドウはまだ画面に表示されています。

これはまた、使い終わったときにそれを取り除くために別の方法が必要であることを意味します. Window の dispose() メソッドに入ります。これは、Window のリスナーの 1 つから呼び出すことができます。

于 2016-03-04T08:44:36.253 に答える
-1

これをチェックして:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

基本的に、「X」が押されたときにアプリをシャットダウンするようにWindowsマネージャーに指示します。

于 2012-10-05T11:10:00.287 に答える