2012-10-05 3 views
4

가상 키 보드에 대한 샘플 클래스를 구현하고이 VirtualKeyboardTest를 실행했습니다. 키보드가 나타나지만 주요 문제는 x 버튼을 클릭 할 때 올바르게 닫히지 않는 것입니다. 어떻게하면됩니까? 이것을 바로 잡는가?닫기 버튼을 클릭 할 때 awt 창이 닫히지 않음

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); 
      } 
     }); 
    } 
} 
+0

AWT는 그 구성 요소가 시스템 자원을 사용합니다. Swing은 JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMenu, JColorChooser 등과 같은 플랫폼 독립적이며 가벼운 구성 요소를 제공합니다. –

답변

0

확인이 : "X"는 눌렀을 때

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

그것은 종료에 기본적으로 당신의 응용 프로그램을 윈도우 관리자를 알려줍니다.

+2

Swing 구성 요소가 아닌 AWT 구성 요소를 사용하는 Duo Gambler . 이 메소드는 사용할 수 없다 setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 프레임을위한 이것은 JFrame을위한 것입니다 – Pratik

+0

아니요 스윙없이 이것을 수행해야합니다 ......... – Gambler

+1

심각하게? -1. 이 대답은 당신이 질문을 읽지 않았 음을 보여줍니다. Swing이 아니라 AWT를 사용합니다. 나는 조금 더 기대할 것이다. – Zizouz212

5

코드가 잘못되었습니다. 대신

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

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

이 당신의 창을 닫습니다하려고합니다.

+0

+1하고 올바른 제안, 좋은 캐치 – mKorbel

+0

@ 피터 .......... 고마워 젠장 – Gambler

2

이 방법 공공 무효의 처분()

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

AWT은 그 구성 요소가 시스템의 자원을 사용 즉 헤비급를 사용하는 것이 좋습니다.

Windows는 비 블로킹입니다. 코드에서 코드를 생성하면 코드가 계속 실행된다는 것을 의미합니다.

이것은 다른 곳의 참조를 명시 적으로 저장하지 않는 한, 창이 생성 직후 범위를 벗어날 수 있음을 의미합니다. 이 시점에서 Window는 여전히 화면에 있습니다.

이렇게하면 작업을 마치면 다른 방법으로 제거 할 수 있습니다. Window dispose() 메서드을 입력합니다.이 메서드는 Window의 리스너 중 하나에서 호출 할 수 있습니다.

관련 문제