전체화면으로 동작하는 Java 어플리케이션
캡스톤 프로젝트로 TV 어플리케이션을 개발하던 중 현재 OpenMHP를 이용해서 TV 어플리케이션을 시험하고 있는데 데모를 위해 전체화면으로 동작해야 하는 필요성이 생기게 되었다. 따라서 OpenMHP의 소스 코드를 수정해야 했다.
일반적으로 자바 프로그램은 하나의 Frame위에서 여러 작업을 수행하게 된다. 하지만 Frame의 테두리가 없이 전체화면으로 동작하는 프로그램을 개발해야 하는 경우가 있다. 보통 영화를 감상할때 플레이어에서 'Enter키'를 누르게 되면 현재 윈도우 사이즈에 맞는 전체화면으로 동작하는 것을 생각하면 될 것이다.
다음은 전체화면으로 동작하는 Viewer를 작성한 것이다. 전체화면으로 동작시키기는 생각보다 쉽다. 그래픽 장치를 얻어와서 전체모드로 바꿔주는 자바 API가 존재한다.
캡스톤 프로젝트로 TV 어플리케이션을 개발하던 중 현재 OpenMHP를 이용해서 TV 어플리케이션을 시험하고 있는데 데모를 위해 전체화면으로 동작해야 하는 필요성이 생기게 되었다. 따라서 OpenMHP의 소스 코드를 수정해야 했다.
일반적으로 자바 프로그램은 하나의 Frame위에서 여러 작업을 수행하게 된다. 하지만 Frame의 테두리가 없이 전체화면으로 동작하는 프로그램을 개발해야 하는 경우가 있다. 보통 영화를 감상할때 플레이어에서 'Enter키'를 누르게 되면 현재 윈도우 사이즈에 맞는 전체화면으로 동작하는 것을 생각하면 될 것이다.
다음은 전체화면으로 동작하는 Viewer를 작성한 것이다. 전체화면으로 동작시키기는 생각보다 쉽다. 그래픽 장치를 얻어와서 전체모드로 바꿔주는 자바 API가 존재한다.
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.MediaTracker;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.MalformedURLException;
import java.net.URL;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.MediaTracker;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.MalformedURLException;
import java.net.URL;
public class FullModeViewer extends Frame {
private Image image;
// Class constructor
public FullModeViewer(String source) throws MalformedURLException {
// loading image
if (source.startsWith("http://")) // http:// URL was specified
image = Toolkit.getDefaultToolkit().getImage(new URL(source));
else
image = Toolkit.getDefaultToolkit().getImage(source); // otherwise - file
MediaTracker mediaTracker = new MediaTracker(this);
mediaTracker.addImage(image, 0);
try {
mediaTracker.waitForID(0);
} catch (InterruptedException ie) {
System.err.println(ie);
System.exit(1);
}
private Image image;
// Class constructor
public FullModeViewer(String source) throws MalformedURLException {
// loading image
if (source.startsWith("http://")) // http:// URL was specified
image = Toolkit.getDefaultToolkit().getImage(new URL(source));
else
image = Toolkit.getDefaultToolkit().getImage(source); // otherwise - file
MediaTracker mediaTracker = new MediaTracker(this);
mediaTracker.addImage(image, 0);
try {
mediaTracker.waitForID(0);
} catch (InterruptedException ie) {
System.err.println(ie);
System.exit(1);
}
// Exiting program on window close
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// Exitig program on mouse click
addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) { System.exit(0); }
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) { System.exit(0); }
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
// remove window frame
this.setUndecorated(true);
// window should be visible
this.setVisible(true);
this.setUndecorated(true);
// window should be visible
this.setVisible(true);
// switching to fullscreen mode
GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().setFullScreenWindow(this);
}
public void paint (Graphics g) {
if (image != null) // if screenImage is not null (image loaded and ready)
g.drawImage(image, 0, 0, null);
}
GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().setFullScreenWindow(this);
}
public void paint (Graphics g) {
if (image != null) // if screenImage is not null (image loaded and ready)
g.drawImage(image, 0, 0, null);
}
// Program entry
public static void main(String[] args) throws Exception {
if (args.length < 1) // by default program will load AnyExample logo
new FullModeViewer(http://image_path);
else
new FullModeViewer(args[0]); // or first command-line argument
}
}
public static void main(String[] args) throws Exception {
if (args.length < 1) // by default program will load AnyExample logo
new FullModeViewer(http://image_path);
else
new FullModeViewer(args[0]); // or first command-line argument
}
}
'Basic Security > _Programming' 카테고리의 다른 글
[XML] distingush processing method of DOM and SAX (0) | 2007.10.11 |
---|---|
[XML] Introduction to DOM and SAX (0) | 2007.10.11 |
[Java] 전체화면으로 동작하는 응용프로그램 (1) | 2007.09.10 |
What is DTV? (0) | 2007.08.15 |
What is JavaTV? (0) | 2007.08.15 |
SOAP(Simple Object Access Protocol)-2 (0) | 2007.08.08 |
댓글을 달아 주세요
아니... 글작성하는 시간보다 키워드 색깔 넣는데 더 많은 시간을 소비했다. 쩝...
2007.09.10 12:37 신고 [ ADDR : EDIT/ DEL : REPLY ]언제쯤 소스코드를 삽입할 수 있는 기능이 추가될지....