문제

나는 Java 애플릿으로 심리학 실험을 설계하고 있습니다. 자바 애플릿을 전체 화면으로 만들어야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇이며 어떻게 할 수 있습니까?

3 년 동안 Java 애플릿을 사용하지 않았기 때문에 (마지막으로 사용한 시간은 코스 숙제였습니다 :)) 대부분의 개념을 잊었습니다. Google을 검색하여 해당 링크를 찾았습니다.다니 웹

그러나 위의 링크에 설명 된 방법에서는 애플릿 안에 jframe을 넣어야하는 방법을 모릅니다.

내가 필요한 것이 무엇이든간에 나는 시간이 많지 않으며 이것이 내가 여기서 물었던 이유입니다.

미리 고맙습니다

도움이 되었습니까?

해결책

WebStart를 사용하고 싶다고 생각합니다. 브라우저에서 배포 할 수 있지만 그렇지 않으면 완전히 날아간 응용 프로그램입니다. 브라우저 보안 제한이 몇 개 있지만 현재 애플릿을 사용하고 있기 때문에 문제가되지 않는다고 생각할 수 있습니다.

다른 팁

명백한 대답은 애플릿을 사용하지 않는 것입니다. jframe 또는 jwindow를 최상위 컨테이너로 사용하는 응용 프로그램을 작성하십시오. 애플릿을 응용 프로그램으로 변환하는 것은 엄청난 양의 작업이 아닙니다. 애플릿은 일반적으로 웹 페이지에 포함되도록 설계되었습니다.

애플릿이 이미 있고 전체 화면을 만들고 싶다면 두 가지 빠르고 더러운 해킹이 있습니다.

1). 화면 해상도를 알고 있다면 애플릿 매개 변수를 HTML에서 해당 크기로 설정 한 다음 전체 화면 모드에서 브라우저를 실행하십시오.

2). 웹 페이지 대신 애플릿을 AppletViewer에서 실행하고 AppletViewer 창을 최대화하십시오.

애플릿에서 새 프레임을 열거나 ( "start ()"메소드에서 또는 사용자가 "열기"버튼을 누른 후)를 최대화하도록 설정하지 않겠습니까?

JFrame frame = new JFrame();
//more initialization code here
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(dim.width, dim.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

잊지 마십시오 : JFrame은 EDT에서 생성하고 열어야합니다. Applet Start ()는 해당 스레드에서 호출되는 것을 보장하지 않으므로 SwingUtilities.invokelater ()를 사용하십시오. 물론 버튼 경로를 선택하면 버튼 리스너가 EDT에서 호출되므로 안전해야합니다.

내가 찾았 어 해결책 이 문제는 잘 작동합니다. Linux 64 비트 (Chrome and Firefox) 및 Windows 7 64 비트 (Chrome and Explorer)에서 테스트

유일한 문제는 내 애플릿이 브라우저의 모든 공간을 사용하고 사용자가 전체 화면 모드를 끄면 애플릿이 브라우저 크기로 확장되지 않는다는 것입니다. 솔루션은 전체 화면 모드로 들어가기 전에 애플릿의 이전 크기를 유지 한 다음 애플릿이 일반 모드로 돌아올 때이 크기를 설정하는 것입니다.

public void setFullScreen() {   
        if (!this.fullscreen) {
            size = this.getSize();
            if (this.parent == null) {
                this.parent = getParent();
            }
            this.frame = new Frame();
            this.frame.setUndecorated(true);
            this.frame.add(this);
            this.frame.setVisible(true);

            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice[] devices = ge.getScreenDevices();
            devices[0].setFullScreenWindow(this.frame);
            this.fullscreen = true;
        } else {
            if (this.parent != null) {
                this.parent.add(this);
            }
            if (this.frame != null) {
                this.frame.dispose();
            }
            this.fullscreen = false;
            this.setSize(size);
            this.revalidate();
        }       
        this.requestFocus();
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top