Blogroll

Kamis, 11 Juni 2015

Tutorial Java: Membuat Aplikasi dengan Full Screen Exclusive Mode

Tutorial Information

ProgramJava
VersionJDK 6+
DifficultyPemula
Estimated Time30 Menit
DownloadClick this link
Dalam artikel ini, penulis akan mencoba berbagi tentang bagaimana membuat suatu aplikasi dengan tampilan full screen disertai dengan pergantian Display Mode yaitu mengenai resolusi, bit depth, dan refresh rate.
Sebuah aplikasi bisa ditampilkan ke layar monitor dalam Full Screen Mode ataupun Windowed Mode. Tergantung dari tujuan penggunaan aplikasi, Anda dapat memilih mode tampilan yang sesuai dengan kebutuhan. Sebagai contoh untuk aplikasi game dengan spesifikasi cukup tinggi, akan lebih baik jika menggunakan mode tampilan Full Screen.
Proses penggambaran tampilan ke layar pada Windowed Mode dikendalikan oleh Sistem Operasi, sedangkan pada Full Screen Mode tampilan ke layar seluruhnya diatur oleh aplikasi tersebut. Ketika berada dalam Full Screen Mode, Anda dapat mengatur Display Mode sehingga tentunya Anda dapat menyamakan bit depth dari seluruh tampilan. Selain itu juga dengan hanya satu tampilan aplikasi di layar, tentunya hal ini akan mengakibatkan meningkatnya performa dari aplikasi.
Jika Full Screen Mode tidak tersupport, pemaksaan menggunakan Full Screen Mode hanya akan menurunkan performance aplikasi.
Ide dasar dari program yang akan Anda buat adalah membuat sebuah objek dari class yang diturunkan dari JFrame dan menampilkannya ke layar dengan Full Screen Mode. Kemudian menambahkan pada frame tersebut pilihan-pilihan untuk mengganti display mode yang tersupport oleh monitor.
  1. Langkah pertama, buatlah sebuah class yang di extend dari class JFrame. Class ini memiliki konstruktor yang menerima sebuah objek dari class GraphicsDevice. Pada frame ini hanya terdapat sebuah tombol exit yang digunakan untuk keluar dari Full Screen mode.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class FullScreenFrame extends JFrame implements ActionListener {
     
        GraphicsDevice device;
        Container mainPanel;
        JButton btnExit;
     
        public FullScreenFrame(GraphicsDevice device) {
            this.device = device;
     
            btnExit = new JButton("CLICK HERE TO EXIT");
            btnExit.addActionListener(this);
     
            //Pengaturan tampilan
            mainPanel = getContentPane();
            mainPanel.setLayout(new BorderLayout());
            JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
            panel.add(btnExit);
            mainPanel.add(panel, BorderLayout.CENTER);
     
            //Deklarasi awal frame
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == btnExit) {
                System.exit(0);
            }
        }
    }
  2. Kemudian tambahkan code dibawah pada deklarasi awal frame pada konstruktor. Kode ini bertujuan untuk membuat frame tidak dapat di resize dan tidak didekorasi (Sebuah aplikasi full screen tidak memerlukan dekorasi frame). Untuk resizeable sangatlah penting karena resize pada aplikasi full screen dapat berakibat fatal.
    1
    2
    setResizable(false);
    setUndecorated(true);
  3. Sekarang untuk membuat aplikasi menjadi Full Screen Mode tambahkan method berikut pada class di atas.
    1
    2
    3
    public void startFullScreen() {
      device.setFullScreenWindow(this);
    }
  4. Kemudian setelah class tersebut telah selesai, Anda uji coba dengan menjalankan method main berikut (boleh diletakkan dimanapun, untuk mudahnya Anda sertakan saja ke class di atas).
    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice device = env.getDefaultScreenDevice();
     
        FullScreenFrame f = new FullScreenFrame(device);
        f.startFullScreen();
    }
  5. Compile dan jalankan. Berikut adalah tampilan yang seharusnya didapat.
  6. Sekarang Anda dapat membuat class baru serupa dengan class diatas, namun memiliki list akan semua display mode yang disupport monitor untuk mencoba pergantian display mode. Silahkan Anda buat kerangka dasarnya seperti kode di bawah ini.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class DisplayModeChange extends JFrame implements ListSelectionListener ,ActionListener {
     
        // letak object
     
        public DisplayModeChange(GraphicsDevice device) {
            this.device = device;
            defaultMode = device.getDisplayMode();
        }
        public void start() {
            device.setFullScreenWindow(this);
        }
        @Override
        public void valueChanged(ListSelectionEvent e) {
        }
        @Override
        public void actionPerformed(ActionEvent e) {
        }
    }
  7. Kemudian tambahkan sebuah method dengan kode sebagai berikut. Method ini berguna untuk membentuk tampilan pada aplikasi seperti label yang berisi mengenai informasi Display Mode saat ini, list akan Display Mode yang didukung oleh monitor, serta tombol-tombol untuk mengganti Display Mode dan tombol untuk keluar dari aplikasi.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public void initComponent() {
            modes = device.getDisplayModes();
            listData = new String[modes.length];
            for (int i = 0; i < modes.length; i++) {
                // kode list data
            }
            list = new JList(listData);
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            list.setVisibleRowCount(6);
            list.addListSelectionListener(this);
            JScrollPane scrollList = new JScrollPane(list);
     
            // kode lain
     
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setResizable(false);
            setUndecorated(true);
    }
    Method ini memang cukup panjang, namun yang perlu Anda perhatikan hanyalah kode berikut yang berfungsi untuk mendapatkan semua Display Mode yang didukung.
    1
    modes = device.getDisplayModes();
  8. Langkah berikutnya adalah memberi aksi pada tombol-tombol yang telah Anda buat. Hal ini bisa dilakukan dengan menambahkan kode berikut pada method actionPerformed yang sebelumnya telah Anda buat namun masih kosong.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    if (e.getSource() == btnChange) {
          device.setDisplayMode(modes[list.getSelectedIndex()]);
          DisplayMode mode = device.getDisplayMode();
          // panggil method set text
    }
     
    if (e.getSource() == btnDefault) {
          device.setDisplayMode(defaultMode);
          DisplayMode mode = device.getDisplayMode();
          // panggil method set text
    }
     
    if (e.getSource() == btnExit) {
          device.setDisplayMode(defaultMode);
          System.exit(0);
    }
    Dari kode di atas yang perlu Anda perhatikan hanyalah kode berikut yang berguna untuk mengubah Display Mode menjadi mode yang Anda inginkan.
    1
    device.setDisplayMode(modes[list.getSelectedIndex()]);
  9. Sekarang setelah class tersebut telah selesai, yang perlu Anda lakukan hanyalah menambah sebuah method main untuk mencoba class tersebut. Method main ini bisa langsung ditambahkan pada class tersebut. Berikut kodenya.
    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
            GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice device = env.getDefaultScreenDevice();
            DisplayModeChange f = new DisplayModeChange(device);
            f.initComponent();
            f.start();
    }
  10. Class sudah bisa dicompile dan dijalankan. Tampilan yang didapat seperti di gambar ini.
Anda bisa mempraktekkan artikel ini sebagai dasar pembuatan aplikasi desktop Anda. Dengan sedikit kreatifitas dan pengembangan, kemampuan dasar ini tentu akan sangat berguna. Selamat mencoba.

0 komentar:

Posting Komentar