Lewati navigasi

Tag Archives: swing


Untuk membuat sebuah JFrame menjadi fullscreen hanya perlu dengan 2 baris kode di bawah.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0, 0, screenSize.width, screenSize.height);

JFrame akan menjadi memenuhi layar. Tapi mungkin masih kurang karena titlebar dari JFrame masih akan terlihat. Untuk itu tinggal eksekusi method setUndecorated dengan nilai true sebelum JFrame ditampilkan.

Cara ini juga dapat diterapkan pada JDialog.


Masih agak-agak terkait dengan 2 post sebelumnya, hasil perhitungan histogram dari sebuah gambar akan ditampilkan dengan menggunakan grafik. Untuk itu dibutuhkan sebuah pustaka grafik. Pustaka yang paling sering saya pakai adalah JFreeChart. Pustaka ini gratis dan sangat lengkap hanya saja untuk mendapatkan dokumentasi dan contoh-contoh penggunaannya yang lengkap kita harus membeli panduannya.

Cara mudah untuk membuat grafik adalah dengan menggunakan ChartFactory pada JFreeChart. Dari factory tersebut kita bebas memilih jenis grafik yang kita inginkan, dalam hal ini CategoryPlot di mana kita ingin menampilkan setiap warna dalam kategori yang berbeda. Untuk mengisi datanya kita hanya memasukkan data ke DataSet yang sesuai (untuk CategoryPlot menggunakan DefaultCategoryDataset atau extend dari CategoryDataset).

Contoh kodenya (digabung dengan penghitungan histogram)

imageColorCount = new int[3][0x100];
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                int color = image.getRGB(x, y);
                int cred = (color & 0x00ff0000) >> 16;
                int cgreen = (color & 0x0000ff00) >> 8;
                int cblue = color & 0x000000ff;
                imageColorCount[RED][cred]++;
                imageColorCount[GREEN][cgreen]++;
                imageColorCount[BLUE][cblue]++;
            }
        }
        //
        DefaultCategoryDataset colorDataset = new DefaultCategoryDataset();
        for (int j = 0; j < 0x100; j++) {
            colorDataset.addValue(imageColorCount[0][j], "Red", new Integer(j));
            colorDataset.addValue(imageColorCount[2][j], "Blue", new Integer(j));
            colorDataset.addValue(imageColorCount[1][j], "Green", new Integer(j));
        }
        JFreeChart jfcolor = ChartFactory.createLineChart("Histogram", "Nilai", "Frekuensi", colorDataset, PlotOrientation.VERTICAL, true, true, true);
        chartRGBPanel.removeAll();
        ChartPanel jpchart = new ChartPanel(jfcolor);
        chartRGBPanel.add(jpchart);
        chartRGBPanel.repaint();

Voila. Di bawah adalah salah satu contoh aplikasi dari kode-kode yang sudah dimodifikasi.


Melanjutkan tulisan sebelumnya, kali ini judulnya khusus untuk menampilkan gambar di Swing. Setelah mencari beberapa kode akhirnya dapat caranya dengan mengextend JPanel.

public class ImagePanel extends JPanel {

    BufferedImage image;
    Dimension size = new Dimension();

    public ImagePanel() {
    }

    public void setImage(BufferedImage bimage) {
        image = bimage;
        size.setSize(image.getWidth(), image.getHeight());
    }

    public BufferedImage getImage() {
        return image;
    }

    @Override
    protected void paintComponent(Graphics g) {
        // Center image in this component.
        int x = (getWidth() - size.width) / 2;
        int y = (getHeight() - size.height) / 2;
        g.drawImage(image, x, y, this);
    }

    /**
     * This method handles the communication of
     * size requirements with the parent JScrollPane.
     */
    @Override
    public Dimension getPreferredSize() {
        return size;
    }
}

Untuk menggunakannya hanya dengan mengeset nilai BufferedImage dengan hasil pembacaan yang sudah saya tulis sebelumnya.