전체 화면 자바 애플릿을 만드는 방법?
-
08-07-2019 - |
문제
나는 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();
}